Spider-Python3Ⅰ
Spider
[^]: Python3 实现
原理
首先,使用网络模块,模拟人的行为,发送HTTP(S)请求;
然后,待服务器正常响应后,接受发来的数据(网页的代码);
最后,使用过滤模块,将需要的信息从网页代码中过滤出来;
P.S. Spider 重要的是模拟人的点击,并且更加高效,这样能够避开反爬虫机制;Spider收到的是整个网页,筛选在本地主机进行,意味着主机接收了无用流量;过滤的机制需要研究,或许可以发现更加高效的算法。
流程
图片来自 https://www.cnblogs.com/lianxiaoniu/p/7698299.html '大规模爬虫流程总结'
策略
根据网页的深度结构,结合数据分布、权重,构成类似二叉树的结构。
简单来说:深度优先 or 广度优先
深度优先:逐一请求HTML i ---> DATA i (1 <= i <= n);bs4
广度优先:先爬取所有HTML,再过滤DATA;Pyspider
进一步说,可以将网页分配不同的权重,以权重决定顺序; pagerank、opic
信息获取
robots.txt
文件
网站通过robots.txt
文件告知爬虫哪些页面可以获取。
robots.txt
位于网站根目录,全小写,格式如下:
网络爬虫排除标准(Robot协议)
无强制约束力,只有法律风险
1 | #百度首页(www.baidu.com)的robots.txt文件: |
Disallow:
字段为禁止爬虫获取的页面,值为/
表示禁止获取任何页面,为空则表示全部页面开放。
Sitemap.xml
文件
网站地图,过期和失效的风险较大。
列出了网站每个页面的网址及其他信息。
身份识别
使用Cookie。
urllib2库保存登入的Cookie,Python3中,http.cookiejar模块负责Cookie(Python2中为cookielib),使用下行代码导入:
1 | from http import cookiejar |