Spider-Python3Ⅰ

Spider

[^]: Python3 实现

原理

首先,使用网络模块,模拟人的行为,发送HTTP(S)请求;

然后,待服务器正常响应后,接受发来的数据(网页的代码);

最后,使用过滤模块,将需要的信息从网页代码中过滤出来;

P.S. Spider 重要的是模拟人的点击,并且更加高效,这样能够避开反爬虫机制;Spider收到的是整个网页,筛选在本地主机进行,意味着主机接收了无用流量;过滤的机制需要研究,或许可以发现更加高效的算法。

流程

1

图片来自 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#百度首页(www.baidu.com)的robots.txt文件:

User-agent: Baiduspider
Disallow: /baidu
Disallow: /s?
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/

User-agent: Googlebot
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/


...


User-agent: *
Disallow: /

Disallow:字段为禁止爬虫获取的页面,值为/表示禁止获取任何页面,为空则表示全部页面开放。

Sitemap.xml文件

网站地图,过期和失效的风险较大。

列出了网站每个页面的网址及其他信息。

身份识别

使用Cookie。

urllib2库保存登入的Cookie,Python3中,http.cookiejar模块负责Cookie(Python2中为cookielib),使用下行代码导入:

1
from http import cookiejar