Python 网络爬虫从0到1 (2):网络爬虫的特性、问题与规范

  网络爬虫的发展为使用者了解和收集网络信息提供便利的同时,也带来了许多大大小小的问题,甚至对网络安全造成了一定危害。所以,在真正开始了解网络爬虫之前,我们也需要先了解一下网络爬虫的特性、带来的问题以及开发和使用网络爬虫的过程中需要遵循的规范。

网络爬虫

网络爬虫的尺寸分类

尺寸 特性 目的 实现方式
小规模 数据量较小,对爬取速度不敏感,数量非常多 爬取网页,探索网页信息 Requests库
中规模 数据量较大,对爬取速度较敏感 爬取网站和系列网站 Scrapy框架
大规模 数据量和规模极大,多用于搜索引擎,爬取速度极为关键 爬取所有Internet上的网站 定制

网络爬虫带来的问题

 系统负担

  由于技术限制和爬取目的,部分网络爬虫产生的网络负载远大于用户访问负载,这给网站造成了很大的带宽负担和Web服务器系统资源开销,为网站的正常运行造成一定的负担。所以对于网站的所有者来说,网络爬虫(特别是不规范运行的爬虫)给网站造成了一定的骚扰。

 法律风险

  由于网站上的数据一般具有产权归属,某些网络爬虫获取数据后如果进行分析贩卖牟取利益将给网站带来经济损失,同时为开发和使用者带来法律风险。所以网络爬虫的设计者在设计爬虫时要严格遵循互联网和企业关于爬虫的管理规定,否则可能承担一定后果。

 隐私泄露

  网站上可能存在部分所有者原本不想让用户访问到的隐私数据,部分网站可能使用较弱的访问控制来保护数据,但部分网络爬虫可能具有绕过或突破这类访问控制的能力。如果网站没有做好信息保护导致信息不慎泄露,就会引发严重的信息安全问题。


网络爬虫的规范

  由于网络爬虫可能会带来上述的问题,但同时网络爬虫本身并不是一个危害性的工具,所以Internet和各个网站都在给出限制条件的基础上允许网络爬虫的运行。下面,我们就来了解一下网站和互联网对爬虫的限制方式

 网络爬虫的限制方法

  来源审查

  部分网站使用较为简单的来源审查来进行访问限制。原理是通过分析网络请求中请求首部的User-Agent字段来筛选请求。网站只响应来自浏览器和友好爬虫的访问请求。来源审查对网站开发人员的技术水平有一定要求

  发布公告(Robots协议)

  网站使用发布公告的方法告知所有爬虫对这个网站的爬取策略,要求每一个爬取该网站的爬虫遵守。目前Internet上主流的公告协议是Robots协议,这个协议规定了网站中可以爬取和不可爬取的内容。这种方法更加简单,对网站开发人员的要求较低。但是,这种发布公告的方法部分情况下仅对爬虫开发者有道德限制,如果没有配合其他访问控制方式,如果爬虫有目的地访问,其能非常容易地找到隐私内容。但是违反该协议的爬虫的开发和使用者将面临很高的法律风险。我们在设计爬虫时也应该遵循这些公告的要求。

 Robots协议

Robots协议(Robots Exclusion Standard网络爬虫排除标准)通过放置在网站根目录下robots.txt文件来告知网络爬虫哪些页面允许爬取而哪些不能。如果一个网站没有在根目录下提供这个文件,则默认允许网络上的所有爬虫爬取网站内容

  Robots协议格式

Robots协议内容主要由下列关键字、通配符与具体名称和路径构成

关键字、通配符 说明
User-agent: 对特定名称的爬虫的规定(开始)
Allow: 允许抓取的内容
Disallow: 禁止抓取的内容
* 通配符,指任意内容
$ 通配符,指以前面内容为结尾
  • 注意:关键字的冒号均为英文,冒号后有一个空格
  • User-agent关键字与爬虫请求中的User-agent首部字段向对应
  • 针对不同爬虫的规则之间有一空行分隔
  • Allow关键字具有与Disallow关键字相反的作用,可以排除某些被其拒绝的子目录
  • 如果没有需要禁止访问的网页,也应该写一行规则,一般在Disallow关键字的空格后直接换行(或在Allow关键字后使用/表示根目录)
  • ?没有特殊含义,仅表示?字面意思

下面节选百度的robots.txt内容进行介绍。

User-agent: Baiduspider
Disallow: /baidu
Disallow: /s?
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/
Disallow: /bh

User-agent: Googlebot
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/
Disallow: /bh

...

User-agent: *
Disallow: /

百度对Baiduspider百度搜索引擎主爬虫限制了特定的目录,而对Googlebot谷歌搜索引擎主爬虫限制了更多内容。在所有允许列表后有一个User-agent: *,并禁止根目录,表示百度网站禁止除了上述友好爬虫外的所有爬虫对网页的抓取。

  Robots协议的遵循方式

  网络爬虫应当能够自动或人工识别robots.txt文件内容,按照协议要求对网站进行爬取。虽然Robots协议对爬虫的运行规定仅是建议性的,但并不意味着不遵循该协议对网站的任意爬取不会存在任何法律风险。尤其是包含商业价值的内容,如果使用爬虫违规爬取获益,将可能面临被起诉风险。
  原则上来说,所有网络爬虫都应该遵循Robots协议规范。如果网络爬虫的访问量较大或者以商业利益为目的,则必须遵守Robots协议,但如果仅仅以个人非盈利目的,且对网站访问量较小,则可以适当减少协议的约束性。如果一个爬虫对网站的访问(频率和爬取内容)与用户的访问模式相当,则该类行为被称为类人行为,这类行为可不遵守Robots协议。

猜你喜欢

转载自blog.csdn.net/Zheng__Huang/article/details/108583115
今日推荐