网络爬虫引发的问题
网络爬虫可以让我们狠方便的获取网络上的内容,但是如果使用不当也会有一定的法律风险问题。
由于服务器上的数据往往都是有产权归属的,如果网络爬虫获得这些数据,并将其进行商业化牟利,那它将会给你带来法律风险。
对于一个网站来说,默认是只允许人去访问的,并且网站的服务器资源也是根据人访问的情况来定义,当我们过度的去使用爬虫访问的时候,就会造成网站服务器的压力过载,使其瘫痪,导致连人都无法再次去访问网站。毕竟计算机的访问速度比人要快的多,因此对于被爬取方来说,过度的被爬取数据是一个狠不好的事情。还有就是如果爬虫程序写的不够完善,也会对网站服务器造成巨大的资源开销。
网络爬虫可能具备突破简单的访问控制的能力,获得被保护的数据,从而泄漏个人隐私。
通过上面的介绍,我们了解到了网络爬虫会引发的一些问题,因此,在使用爬虫的过程,我们需要遵守一些指定的规则。
当然这些规则都不是强制性的,因此一些技术能力较好的公司,会有自己的一套网络爬虫的限制,例如:
- 来源审查:通过判断User-Agent进行限制,检查来访的HTTP的协议头中的User-Agent域,只响应浏览器和一些友好的爬虫访问。
- 发布公告:Robots协议,这个协议是告知所有网络爬虫,对本站点的爬取策略,要求爬虫遵守此协议。当然这个公告是没有办法要求爬虫去强制遵守的,需要爬虫自己本身的一个自觉性。
网络爬虫的分类
网络爬虫,可以分为三个大的类型。
- 爬取单独页面的爬虫,小规模,数据量小,爬取速度不敏感,可以直接使用requests库实现功能。
- 爬取整个网站或者爬取系列网站的爬虫,中规模,数据规模较大,对爬取速度较为敏感,这种类型的爬虫需要使用更加专业的爬虫工具,如:Scrapy库。
- 爬取全网的爬虫,规模大,一般是搜索引擎会用到这种类型的爬虫,爬取速度非常的关键,这种类型的爬虫,只可能是定制开发,不可能有通用的第三库来实现的。
Robots协议
Robots协议是一种存放于网站根目录下的ASCII编码的文本文件,它通常告诉网络爬虫,此网站中的哪些内容是不应被搜索引擎的网络爬虫获取到,哪些是可以被网络爬虫获取到。
因为一些系统中的URL是大小写敏感的,所以Robots的文件名(robots.txt)应统一为小写。
robots.txt应放置于网站的根目录下。如果想单独定义搜索引擎的网络爬虫访问子目录时的行为,那么可以将自定的设置合并到根目录下的robots.txt,或者使用Robots元数据(Metadata,又称元数据)。
网络爬虫需自动或人工识别robots.txt,然后在进行内容的爬取。
Robots协议并不是强制性的,而只是约定俗成的,所以并不能保证网站的数据安全性。
Robots协议是建议,但非约束性,因此网络爬虫可以不遵守,但存在法律风险。
简单介绍以下京东的Robots协议:
User-agent: * # 所有的网络爬虫都需要遵守
Disallow: /?* # 不允许爬取此类的url数据
Disallow: /pop/*.html # 不允许爬取此类的url数据
Disallow: /pinpai/*.html?* # 不允许爬取此类的url数据
User-agent: EtaoSpider # 下面的四种爬虫不允许爬取JD的任何数据
Disallow: /
User-agent: HuihuiSpider
Disallow: /
User-agent: GwdangSpider
Disallow: /
User-agent: WochachaSpider
Disallow: /
Robots协议的基本语法:
* 代表所有
/ 代表网站根目录
User-Agent 请求类型
Disallow 不允许访问的url
还有许多的网站的Robots协议,有兴趣的可以去看看:
如果说一个网站没有Robots协议的文件,那么可以说,这个网站是允许所有爬虫来爬虫所有的资源。