网络爬虫的问题&Robots 协议
一、网络爬虫引发的问题
根据爬取规模的大小分类
- 爬取网页:
规模小,获取数据量小,对于爬取速度并不敏感。
使用Requests库 大部分都是使用Requests库针对特定网页/一系列网页 - 爬取网站/系列网站:
中规模,数据规模较大,爬取速度敏感,要保证爬取速度能跟上网站的更新速度。
使用Scrapy库 - 爬取全网:
大规模,搜索引擎爬取速度关键 (搜索引擎,爬取全网所有数据),只能定制开发,不能有第三方库
网络爬虫引发的问题
- 对网页的性能骚扰
Web服务器默认接受人类的访问,受限于编写水平和目的,网络爬虫将会为Web服务器带来巨大资源开销。 - 法律风险
服务器上数据有产权归属,如果进行牟利会违反法律。 - 隐私泄露
突破简单访问控制的能力,使用户的信息泄露。
网络爬虫的限制方法
- 来源审查:判断User-Agent进行限制
无论是网站还是服务器都会设置一个标识放在User-Agent里,服务器检查来访的HTTP协议头的User-Agent域,(如果不匹配说明不是友好爬虫),只响应浏览器或友好爬虫的访问。对技术能力有较高的要求。 - 发布公告:Robots协议
告知所有爬虫网站的爬取策略,要求爬虫遵守策略。
二、Robots协议
Robots Exclusion Standard 网络爬虫排除标准
作用:网络通过内部语法告知爬虫哪些页面可以抓取
形式:在网站的根目录下的robots.txt文件(写明了在一个网站里哪些目录是允许爬虫爬取的以及哪些目录是不允许的。)
Robots协议基本语法
#注释
- 所有
/ 根目录
User-Agent: * 表明哪些爬虫,*代表所有
Disallow: / 不允许爬虫访问资源的目录
案例:京东的robots协议,打开https://www.jd.com/robots.txt
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: /
这四个爬虫不允许爬取任何资源 (EtaoSpider, HuihuiSpider, GwdangSpider, WochachaSpider)
案例
百度 http://www.baidu.com/robots.txt
新浪 http://www.sina.com.cn/robots.txt
QQ http://www.qq.com/robots.txt
QQ新闻 http://news.qq.com/robots.txt
(两个不同根目录)协议内容不一样
国家教育部http://www.moe.edu.cn/robots.txt (无Robots协议)
如果不提供robots.txt: 允许所有爬虫无限制的爬取内容
三、Robots协议的遵守方式
Robots协议的使用:对于任何网络爬虫,自动或人工识别robots.txt,再进行内容爬取。
约束性:建议但非约束性。可以不遵守,但是可能存在法律风险
对网站不造成巨大资源影响,类似于人类访问信息,可以不遵守(访问次数很少,每次访问内容也不大)