文章首发于慕课网
爬虫定义
网络爬虫(英语:web crawler),也叫网络蜘蛛(spider),是一种用来自动浏览万维网的网络机器人。其目的一般为编纂网络索引。——维基百科
万物都有两面性。而爬虫作为一种计算机技术就决定了它的中立性,因此爬虫本身在法律上并不被禁止,但是利用爬虫技术获取数据这一行为是具有违法甚至是犯罪的风险的。所谓具体问题具体分析,正如水果刀本身在法律上并不被禁止使用,但是用来捅人,就不被法律所容忍了。
爬虫分类:
主要分为以下三类:
小规模,数据量小,爬取速度不敏感;对于这类网络爬虫我们可以使用Requests库来实现,主要用于爬取网页;
中规模,数据规模较大,爬取速度敏感;对于这类网络爬虫我们可以使用Scrapy库来实现,主要用于爬取网站或系列网站;
大规模,搜索引擎,爬取速度关键;此时需要定制开发,主要用于爬取全网,一般是建立全网搜索引擎,如百度、Google搜索等。
在这三种中,我们最为常见的是第一种,大多数均是小规模的爬取网页的爬虫。
爬虫引发的问题
- 性能骚扰:web服务器默认接受人类访问,受限于编写水平和目的,网络爬虫将会为web服务器带来巨大的资源的开销。
- 法律风险:服务器上的数据有产权归属,网络爬虫获取数据后牟利将会带来法律的风险。
- 隐私泄露: 网络爬虫可能具备突破简单访问的控制能力,获取被保护的数据,从而泄露个人隐私。
爬虫的限制
如果你问我那种途径最容易暴富,我建议你去看一下刑法。同样的道理,网络爬虫的限制方法,也就成了我们平常突破反爬措施的突破入口。
- 来源审查:判断User-Agent进行限制,检查来访者HTTP协议头的User-Agent域,只响应浏览器或友好爬虫的访问
- 发布公告: Robots协议, 告知所有的爬虫网站的爬虫策略,要求爬虫遵守。
Robots协议
从爬虫的限制中,可以看到Robots协议是防止爬虫的一种手段。那么先来看一下Robots协议的解释
robots.txt是一个协议,是搜索引擎中访问网站的时候要查看的第一个文件。它告诉蜘蛛程序在服务器上什么文件是可以被查看的。
当一个搜索蜘蛛访问一个站点时,它会首先检查该站点根目录下是否存在robots.txt,如果存在,搜索机器人就会按照该文件中的内容来确定访问的范围;如果该文件不存在,所有的搜索蜘蛛将能够访问网站上所有没有被口令保护的页面。
如果将网站视为酒店里的一个房间,robots.txt就是主人在房间门口悬挂的“请勿打扰”或“欢迎打扫”的提示牌。这个文件告诉来访的搜索引擎哪些房间可以进入和参观,哪些房间因为存放贵重物品,或可能涉及住户及访客的隐私而不对搜索引擎开放。但robots.txt不是命令,也不是防火,如同守门人无法阻止窃贼等恶意闯入者。——百度百科
也就是说如果一个搜索引擎不尊重robots.txt的“君子协议”,那么无论robots.txt文件写的多严密多好也是没用的。所幸的是,互联网社会的大部分成员都还是尊重robots协议的。[1]
但是平常在使用scrapy的过程总是不遵守robots协议,并且设置的时延比较小。如果是长时间爬取的话,会对站点的服务器造成性能骚扰。
# Obey robots.txt rules ROBOTSTXT_OBEY = False
DOWNLOAD_DELAY = 1
查看工具
有时候,需要查看一下该网站是否发布robots协议,可以在百度的搜索资源平台查看。网址:https://ziyuan.baidu.com/robots/index
例如:查看豆瓣
从豆瓣的robots.txt中可以看到哪些是允许爬虫爬取的,哪些是禁止的。并且对User-agent也有要求。
风险
爬虫所带来的风险主要有以下几点:
规避方法
因此,爬虫开发者在使用爬虫时应注意:
参考资料:
神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试