本文为北理嵩天老师《网络爬虫与信息提取》学习笔记。
一、网络爬虫可按规分为三类:
小规模 | 中规模 | 大规模 |
---|---|---|
爬取网页、玩转网页(占比>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协议