分享好友 最新动态首页 最新动态分类 切换频道
Python爬虫原理
2024-12-27 09:16

简单来说互联网是由一个个站点和网络设备组成的大网,我们通过浏览器访问站点,站点把HTML、JS、CSS代码返回给浏览器,这些代码经过浏览器解析、渲染,将丰富多彩的网页呈现我们眼前;

Python爬虫原理

 

如果我们把互联网比作一张大的蜘蛛网,数据便是存放于蜘蛛网的各个节点,而爬虫就是一只小蜘蛛,

沿着网络抓取自己的猎物(数据)爬虫指的是:向网站发起请求,获取资源后分析并提取有用数据的程序;

从技术层面来说就是 通过程序模拟浏览器请求站点的行为,把站点返回的HTML代码/JSON数据/二进制数据(图片、视频) 爬到本地,进而提取自己需要的数据,存放起来使用;

 

 

 

 

用户获取网络数据的方式:

方式1:浏览器提交请求--->下载网页代码--->解析成页面

方式2:模拟浏览器发送请求(获取网页代码)->提取有用的数据->存放于数据库或文件中

爬虫要做的就是方式2;

1、发起请求

使用http库向目标站点发起请求,即发送一个Request

Request包含:请求头、请求体等 

Request模块缺陷:不能执行JS 和CSS 代码

 

2、获取响应内容

如果服务器能正常响应,则会得到一个Response

Response包含:html,json,图片,视频等

 

3、解析内容

解析html数据:正则表达式(RE模块),第三方解析库如Beautifulsoup,pyquery等

解析json数据:json模块

解析二进制数据:以wb的方式写入文件

 

4、保存数据

数据库(MySQL,Mongdb、Redis)

文件

 

 

 

Request:用户将自己的信息通过浏览器(socket client)发送给服务器(socket server)

Response:服务器接收请求,分析用户发来的请求信息,然后返回数据(返回的数据中可能包含其他链接,如:图片,js,css等)

ps:浏览器在接收Response后,会解析其内容来显示给用户,而爬虫程序在模拟浏览器发送请求然后接收Response后,是要提取其中的有用数据。

 

 

1、请求方式:

常见的请求方式:GET / POST

 

2、请求的URL

url全球统一资源定位符,用来定义互联网上一个唯一的资源 例如:一张图片、一个文件、一段视频都可以用url唯一确定

 

url编码

https://www.baidu.com/s?wd=图片

图片会被编码(看示例代码)

 

网页的加载过程是:

加载一个网页,通常都是先加载document文档,

在解析document文档的时候,遇到链接,则针对超链接发起下载图片的请求

 

3、请求头

User-agent:请求头中如果没有user-agent客户端配置,服务端可能将你当做一个非法用户host;

cookies:cookie用来保存登录信息

注意: 一般做爬虫都会加上请求头

 

 

 

请求头需要注意的参数:

(1)Referrer:访问源至哪里来(一些大型网站,会通过Referrer 做防盗链策略;所有爬虫也要注意模拟)

(2)User-Agent:访问的浏览器(要加上否则会被当成爬虫程序)

(3)cookie:请求头注意携带

 

4、请求体

请求体
    如果是get方式,请求体没有内容 (get请求的请求体放在 url后面参数中,直接能看到)
    如果是post方式,请求体是format data

    ps:
    1、登录窗口,文件上传等,信息都会被附加到请求体内
    2、登录,输入错误的用户名密码,然后提交,就可以看到post,正确登录后页面通常会跳转,无法捕捉到post

 

1、响应状态码

  200:代表成功

  301:代表跳转

  404:文件不存在

  403:无权限访问

  502:服务器错误

 

2、respone header


响应头需要注意的参数:

(1)Set-Cookie:BDSVRTM=0; path=/:可能有多个,是来告诉浏览器,把cookie保存下来

(2)Content-Location:服务端响应头中包含Location返回浏览器之后,浏览器就会重新访问另一个页面

 

 

3、preview就是网页源代码

JSO数据

如网页html,图片

二进制数据等 

 

 

1、总结爬虫流程:

 爬取--->解析--->存储

 

2、爬虫所需工具:

 请求库:requests,selenium(可以驱动浏览器解析渲染CSS和JS,但有性能劣势(有用没用的网页都会加载);)
 解析库:正则,beautifulsoup,pyquery
 存储库:文件,MySQL,Mongodb,Redis

 

3、爬获校花网

基础版:

 

函数封装版

 

并发版(如果一共需要爬30个视频,开30个线程去做,花的时间就是 其中最慢那份的耗时时间)

 

涉及知识:多线程多进程

计算密集型任务:使用多进程,因为能Python有GIL,多进程可以利用上CPU多核优势;

IO密集型任务:使用多线程,做IO切换节省任务执行时间(并发)

线程池

 

 

参考博客:

瞎驴http://www.cnblogs.com/linhaifeng/articles/7773496.html

最新文章
科美诊断:12月11日融资净买入155.09万元,连续3日累计净买入336.65万元
证券之星消息,12月11日,科美诊断(688468)融资买入460.3万元,融资偿还305.21万元,融资净买入155.09万元,融资余额1.18亿元,近3个交易日已连续净买入累计336.65万元,近20个交易日中有17个交易日出现融资净买入。融券方面,当日无融券
财经早报:ETF又开启资金“扫货”模式 美国量子计算妖股又暴涨超50%
登录新浪财经APP 搜索【信披】查看更多考评等级  国资委重磅发布!“央企市值管理九条”来了,多家公司意愿强出手并购大股东资产  鼓励业务多元化的控股上市公司进一步突出专业化发展特色,探索将内部业务独立、质地优良、成长性好、具
发帖秒收录的网站(华网优站网,收录快)百度收录方法有几种
在现今的网络时代,网站内容被收录对企业及个人的网络推广极为关键。部分网站能实现发帖后即刻收录,华网优站网便是其中之一。该平台专业提供网站技术服务,尤其在软文收录方面表现尤为突出。华网优站网向客户提供了文章收录服务。文章一经
神力股份跌6.49%,成交额7191.41万元,今日主力净流入-335.35万
12月16日,跌6.49%,成交额7191.41万元,换手率2.47%,总市值28.57亿元。根据AI大模型测算神力股份后市走势。短期趋势看,连续3日被主力资金减仓。主力没有控盘。中期趋势方面,下方累积一定获利筹码。近期该股获筹码青睐,且集中度渐增。
鸿蒙十大榜单_2024第三季度板块股票营收排行榜
  公司所在地:重庆  所属行业:汽车整车  赛力斯发布2024年第三季度财报,实现营业收入415.82亿元,同比增长636.25%,归母净利润24.13亿,同比354.1%;每股收益为1.6元。  NO.2、华勤技术:366.12亿元  公司所在地:上海  所
如何通过自己的努力变得更优秀?(优化思维、精神、身体的三大方式)
点击上方关注我们你有没这样的经历:不做知道会让自己变得更好的事情——像锻炼、冥想和创建感恩清单这样的习惯,而感到失去积极活动所能带来的能量。使自己感到疲惫……从里到外。更糟糕的是,梦想和目标正在逐渐消失。建立积极的日常生活
网站关键词在百度突然消失的原因分析及应付方法
6天前,也就是上周四,晚上我查看网站统计报告的时候,发现某关键词的百度来路一个都没有,太出人意料了,因为这个关键词稳定在百度前二页至少有半年的时间了。 关键词在百度中突然消失 我最初猜想是该关键词掉到第4或者第5页去了,那样的
阿里云短信服务:企业短信稳定送达
在数字化时代,短信作为一种直接、快速的通信手段,对企业与客户之间的沟通至关重要。比如,营销短信因其成本效益和广泛覆盖率而备受青睐。然而,在实施短信触达策略时,企业也常面临发送成功率的挑战。 短信发送成功率不仅关系到信息是否
己内酰胺十大公司排名_企业营收排行榜(第一季度)
  6月28日中国化学3日内股价上涨2.18%,截至15点收盘,该股报8.240元涨3%,成交5.8亿元,换手率1.17%。财报显示, 2024年第一季度,公司营业收入451.71亿元;归属上市股东的净利润为12.16亿元;全面摊薄净资产收益 2.09%;毛利率8.01%,
【T600腾讯手机管家下载】酷比T600腾讯手机管家16.1.19免费下载
腾讯手机管家专注手机骚扰拦截,动态守护手机安全,深度清理微信、QQ缓存,让手机体积减半,拒绝卡慢。---认真服务---【骚扰拦截】智能拦截骚扰电话,过滤诈骗垃圾短信【清理加速】清理加速能力升级,释放空间告别卡慢【微信清理】个性清理
相关文章
推荐文章
发表评论
0评