欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

网络爬虫如何做才算好?

程序员文章站 2022-04-12 21:05:40
...
网络爬虫的实质,其实是从网络上“偷”数据。通过网络爬虫,我们可以采集到所需要的资源,但是同样,使用不当也可能会引发一些比较严重的问题。

因此,在使用网络爬虫时,我们需要做到“盗亦有道”。

网络爬虫主要分为以下三类:

1. 小规模,数据量小,爬取速度不敏感;对于这类网络爬虫我们可以使用Requests库来实现,主要用于爬取网页;

2. 中规模,数据规模较大,爬取速度敏感;对于这类网络爬虫我们可以使用Scrapy库来实现,主要用于爬取网站或系列网站;

3. 大规模,搜索引擎,爬取速度关键;此时需要定制开发,主要用于爬取全网,一般是建立全网搜索引擎,如百度、Google搜索等。

在这三种中,我们最为常见的是第一种,大多数均是小规模的爬取网页的爬虫。

对于网络爬虫,也有很多反对声音。因为网络爬虫会不停的向服务器发出请求,影响服务器性能,对服务器产生骚扰行为,并加大了网站维护者的工作量。

除了对服务器的骚扰外,网络爬虫也有可能引发法律风险。因为服务器上的数据有产权归属,如果将该数据用于牟利的话,将会带来法律风险。

此外,网络爬虫也可能会造成用户的隐私泄露。

简而言之,网路爬虫的风险主要归于以下三点:

  • 对服务器的性能骚扰

  • 内容层面的法律风险

  • 个人隐私的泄露

因此,网络爬虫的使用需要有一定的规则。

在实际情况中,一些较大的网站都对网络爬虫进行了相关限制,整个互联网上也将网络爬虫视为可规范的功能来看待。

对于一般的服务器来讲,我们可以通过2种方式来限制网络爬虫:

1. 如果网站的所有者有一定的技术能力,可以通过来源审查来限制网络爬虫。

来源审查,一般通过判断User-Agent来进行限制,本篇文章着重介绍第2种。

2. 通过Robots协议来告诉网络爬虫需要遵守的规则,哪些可以爬取,哪些是不允许的,并要求所有的爬虫遵守该协议。

第2种是以公告的形式告知,Robots协议是建议但非约束性,网络爬虫可以不遵守,但可能会存在法律风险。通过这两种方法,互联网上形成了对网络爬虫的道德和技术上的有效限制。

那么,我们在编写网络爬虫时,就需要去尊重网站的维护人员对网站资源的管理。

互联网上,部分网站没有Robots协议,所有数据都可以爬取;不过,绝大多数的主流网站都支持Robots协议,有做相关限制,下面就具体介绍下Robots协议的基本语法。

Robots协议(Robots Exclusion Standard,网络爬虫排除标准):

作用:网站告知网络爬虫哪些页面可以爬取,哪些不行。

形式:在网站根目录下的robots.txt文件。

Robots协议的基本语法:*代表所有,/代表根目录。

比如,PMCAFF的Robots协议:

User-agent: *

Disallow: /article/edit

Disallow: /discuss/write

Disallow: /discuss/edit

第1行中User-agent:*,是指所有的网络爬虫都需要遵守如下协议;

第2行中Disallow: /article/edit,是指所有的网络爬虫都不允许访问article/edit下的内容,其他同理。

如果观察京东的Robots协议,,可以看到下面有User-agent: EtaoSpider,Disallow: /,其中EtaoSpider是恶意爬虫,不允许其爬取京东的任何资源。

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协议都是存在根目录下的,不同的根目录可能Robots协议是不一样的,在爬取时需要多加留意。

以上就是网络爬虫如何做才算好?的详细内容,更多请关注其它相关文章!