003 Python网络爬虫与信息提取 网络爬虫的'盗亦有道'
[A] 网络爬虫引发的问题
1. 当前网络爬虫根据规模可分为三种:
1. 小型规模,主要用于爬取网页,玩转网页,数据量小,并且对于爬取速度不敏感,这种爬虫可以直接通过Python提供的第三方库Requests即可实现
2. 中等规模,主要用于爬取网站,系列网站,数据量大,并且对于爬取速度有敏感性,如爬取网站上航班信息,对于这种爬虫,Python提供的Scrapy库即可满足
3. 大型规模,主要实现全网爬取,数据量特别大,比如百度搜索引擎,谷歌搜索引擎,这种规模的爬虫只能定制开发,第三方库无法满足
2. 网络爬虫引发的问题:
1. 骚扰问题
这是指网络爬虫访问服务器时,相比于人类更加高速和频繁,会增加服务器的负荷
2. 法律问题
这是指服务器上存储的数据是由产权归属的,用于牟利的网络爬虫存在法律风险
3. 隐私泄露问题
这是指网络爬虫具备突破简单访问限制的能力,获得被保护数据从而获得个人隐私内容
3. 目前存在对网络爬虫限制方法
1. 来源审查 通过判断 User-Agent 进行限制
即检查来访HTTP协议头的 User-Agent 域,只响应浏览器或者友好爬虫的访问
2. 发布公告 Robots协议
即告诉所有爬虫网站的爬虫策略,要求所有爬虫遵守。
[B] Robots协议
Robots协议全称是 Robots Exclusion Standard 网络爬虫排除标准
作用:网站告知网络爬虫哪些网页可以抓取,哪些不行
形式:在网站根目录下的 robots.txt 文件
如京东网站的robots协议
# 获取robots协议:https://www.jd.com/robots.txt
# 注释,*代表所有,/代表根目录
User-Agent:*
Disallow:/
User-agent: * Disallow: /?* Disallow: /pop/*.html Disallow: /pinpai/*.html?* User-agent: EtaoSpider Disallow: / User-agent: HuihuiSpider Disallow: / User-agent: GwdangSpider Disallow: / User-agent: WochachaSpider Disallow: /
Robots协议的使用
网络爬虫:能自动或人工识别robots.txt,再进行内容爬取
约束性:Robots协议是建议但是非约束性的,网络爬虫可以不遵守,但存在法律风险