网络爬虫:爬虫的Robots协议

本文为北理嵩天老师《网络爬虫与信息提取》学习笔记。

一、网络爬虫可按规分为三类:

小规模 中规模 大规模
爬取网页、玩转网页(占比>90%) 爬取网站,或爬取系列网站 爬取全网
数据量小 数据规模较大 搜索引擎的规模
爬取速度不敏感 爬取速度敏感 爬取速度很关键
Requests库 Scrapy库 定制开发,不可能由第三方库来操作
建议遵守爬虫协议 必须遵守爬虫协议 必须遵守爬虫协议

二、网络爬虫会带来一些问题:

1.骚扰
对于编写网站的服务器而言,网络爬虫就像一个骚扰电话一样,会给网络爬虫带来致命的骚扰功能。
因为,服务器是默认按照人的访问习惯或次数去约定它的访问能力,而爬虫的访问速度比人快很多,服务器很难提供这么高的性能,这将为web服务器带来巨大的资源开销。

2.法律风险
服务器上的数据往往是有产权归属,如果网络爬虫获取这些数据后,将其用来牟利,将带来法律风险。

3.个人隐私泄露风险
爬虫可能具备突破简单访问控制(账号、密码)的能力,获得被保护数据从而泄露个人隐私。

现各个网站以及整个Internet对网络爬虫有一定的限制。

三、网络爬虫的限制:

1.来源审查:判断Use-Agent进行限制
检查来访HTTP协议头的User-Agent域,只响应浏览器或友好爬虫的访问。
(该办法需要对维护网站的技术人员的能力有一定要求)

2.发布公告:Robots协议
告知所有爬虫网站的爬取协议,要求爬虫遵守。
但Robots仅仅是发布公告,是否遵守需要由网络爬虫自身来决定。

主要是通过这两种方法,互联网上形成了对爬虫道德和技术的限制。

四、Robots协议:

Robots Exclusion Standard 网络爬虫排除标准
作用:网站告知爬虫哪些页面可以抓取,哪些不行。
形式:在网站的根目录下的robots.txt文件,其中写明哪些目录是可以爬取,哪些目录是不可以爬取。

robots.txt的基本语法:

User-agent: *   #表明规则适用于哪些爬虫
Disallow: / 	#不允许爬虫访问的资源目录

以京东为例(https://www.jd.com/robots.txt)

User-agent: *   #无论是何爬虫,都应遵守如下协议
Disallow: /?*   #任何爬虫都不允许访问以?开头的路径
Disallow: /pop/*.html    #任何爬虫都不允许访问/pop/*.html这样的路径
Disallow: /pinpai/*.html?*   #不允许访问符合Disallow: /pinpai/*.html?* 通配符的路径

#以下四个网络爬虫不允许爬取京东的任何网络资源,若被发现,会拒绝任何对京东数据的访问。
User-agent: EtaoSpider 
Disallow: / 
User-agent: HuihuiSpider 
Disallow: / 
User-agent: GwdangSpider 
Disallow: / 
User-agent: WochachaSpider 
Disallow: /

如果一个网站没有robots.txt文件,则允许所有爬虫随意爬取所有内容

robots协议的遵守方式
网络爬虫:自动或人工识别robots.txt,再进行内容爬取。
约束性:Robots协议是建议而非约束性,可以不遵守,但存在法律风险。

类人类行为(每天只访问几次,每次访问不爬取大量数据)可以不参考robots协议

你可能感兴趣的:(Python网络爬虫学习笔记)