0


认识网络爬虫(一看秒知)

前言:

随着网络的蓬勃发展,互联网成为大量信息的载体,如何有效提取并利用这些信息成为

一个巨大的挑战。网络爬虫作为一种自动采集数据的技术,凭借自身强大的自动抓取网页数

据的能力,成为当下互联网高效、灵活地收集数据的解决方案之一。本章主要对网络爬虫的

基础知识进行详细讲解。

1.1 什么是网络爬虫

网络爬虫(Web Crawler)又称网络蜘蛛、网络机器人,它是一种按照一定规则,自动请

求网站并提取网页数据的程序或脚本。通俗地讲,网络爬虫就是一个模拟真人浏览互联网行

为的程序。这个程序可以代替真人自动请求互联网,并接收从互联网返回的数据。与真人浏

览互联网相比,网络爬虫能够获取的信息量更大,效率也更高。

历经几十年的发展,网络爬虫的相关技术变得多样化,并结合不同的需求衍生出类型众多

的网络爬虫。网络爬虫按照系统结构和实现技术大致可以分为 4 种类型,它们分别是通用网络

爬虫、聚焦网络爬虫、增量式网络爬虫、深层网络爬虫。下面分别对这 4 种网络爬虫进行介绍。

1.通用网络爬虫

通用网络爬虫(General Purpose Web Crawler)又称全网爬虫(Scalable Web Crawler),是002 Python 网络爬虫基础教程

指访问全互联网资源的网络爬虫。通用网络爬虫是“互联网时代”早期出现的传统网络爬虫,

它是搜索引擎(如百度、谷歌、雅虎等)抓取系统的重要组成部分,主要用于将互联网中的

网页下载到本地,形成一个互联网网页的镜像备份。

通用网络爬虫的目标是全互联网资源,数量巨大且范围广泛。这类网络爬虫对爬行速度

和存储空间的要求是非常高的,但是对抓取网页的顺序的要求相对较低。

2.聚焦网络爬虫

聚焦网络爬虫(Focused Web Crawler)又称主题网络爬虫(Topical Web Crawler),是指有

选择性地访问那些与预定主题相关的网页的网络爬虫。它根据预先定义好的目标,有选择性

地访问与目标主题相关的网页,获取所需要的数据。

与通用网络爬虫相比,聚焦网络爬虫只需要访问与预定主题相关的网页,这不仅减少了

访问和保存的页面数量,而且提高了网页的更新速度。可见,聚焦网络爬虫在一定程度上节

省了网络资源,能满足一些特定人群采集特定领域数据的需求。

3.增量式网络爬虫

增量式网络爬虫(Incremental Web Crawler)是指对已下载的网页采取增量式更新,只抓

取新产生或者已经发生变化的网页的网络爬虫。

增量式网络爬虫只会抓取新产生的或内容变化的网页,并不会重新抓取内容未发生变化

的网页,这样可以有效地减少网页的下载量,减少访问时间和存储空间的耗费,但是增加了

网页抓取算法的复杂度和实现难度。

4.深层网络爬虫

深层网络爬虫(Deep Web Crawler)是指抓取深层网页的网络爬虫。它要抓取的网页层次

比较深,需要通过一定的附加策略才能够自动抓取,实现难度较大。

在实际应用中,网络爬虫系统通常是由以上 4 种网络爬虫相结合实现的。本书主要介绍

的是聚焦网络爬虫。

1.2 网络爬虫的应用场景

随着互联网信息的“爆炸”,网络爬虫渐渐为人们所熟知,并被应用到社会生活的众多领

域。作为一种自动采集网页数据的技术,很多人其实并不清楚网络爬虫具体能应用到什么场第 1 章 认识网络爬虫 003

景。事实上,大多数依赖数据支撑的应用场景都离不开网络爬虫,包括搜索引擎、舆情分析

与监测、聚合平台、出行类软件等,关于这 4 个应用场景的介绍如下。

1.搜索引擎

搜索引擎是通用网络爬虫最重要的应用场景之一,它将网络爬虫作为最基础的部分——

互联网信息的采集器,让网络爬虫自动到互联网中抓取数据。例如,谷歌、百度、必应等搜

索引擎都利用网络爬虫技术从互联网中采集海量的数据。

2.舆情分析与监测

政府或企业通过网络爬虫技术自动采集论坛评论、在线博客、新闻媒体或微博等网站中

的海量数据,采用数据挖掘的相关方法(如词频统计、文本情感计算、主题识别等)发掘舆

情热点,跟踪目标话题,并根据一定的标准采取相应的舆情控制与引导措施。例如,百度热

搜、微博热搜等。

3.聚合平台

如今出现的很多聚合平台,如返利网、慢慢买等,也是网络爬虫技术常见的应用场景。

这些平台就是运用网络爬虫技术对一些电商平台上的商品信息进行采集,将所有的商品信息

放到自己的平台上展示,并提供横向数据的比较,帮助用户寻找实惠的商品价格。例如,用

户在慢慢买平台搜索华为智能手表后,平台上展示了很多款华为智能手表的价格分析及价格

走势等信息。

4.出行类软件

出行类软件,如飞猪、携程、去哪儿等,也是网络爬虫应用得比较多的场景。这类应用

运用网络爬虫技术,不断地访问交通出行的官方售票网站刷新余票,一旦发现有新的余票便

会通知用户付款买票。不过,官方售票网站并不欢迎网络爬虫的这种行为,因为高频率地访

问网页极易造成网站瘫痪。

总而言之,网络爬虫具有非常大的潜在价值,它不仅能为有高效搜索需求的用户提供有

力的数据支持,还能为中小型网站的推广引流提供有效的渠道,给我们的生活带来了极大的

便利。但同时,网络爬虫若不加以规范,很有可能侵害我们的利益。

1.3 网络爬虫合法性探究

网络爬虫在访问网站时需要遵循“有礼貌”的原则,这样才能与更多的网站建立友好关

系。即便如此,网络爬虫的抓取行为仍会给网站增加不小的压力,严重时甚至可能影响对网

站的正常访问。为了约束网络爬虫的恶意行为,网站内部加入了一些防爬虫措施来阻止网络

爬虫。与此同时,网络爬虫也研究了防爬虫措施的应对策略。接下来,本节将从 Robots 协议、

防爬虫应对策略两个方面对网络爬虫合法性的相关内容进行讲解。

1.3.1 Robots 协议

为了维护良好的互联网环境,保证网站与网络爬虫之间的利益平衡,1994 年 6 月 30 日,

爬虫软件设计者及爱好者经过共同讨论后,正式发布了一份行业规范——Robots 协议。004 Python 网络爬虫基础教程

Robots 协议又称爬虫协议,它是国际互联网界通行的道德规范,用于保护网站数据和敏

感信息,确保网站用户的个人信息和隐私不受侵犯。为了让网络爬虫了解网站的访问范围,

网站管理员通常会在网站的根目录下放置一个符合 Robots 协议的 robots.txt 文件,通过这个文

件告知网络爬虫在抓取该网站数据时存在哪些限制,哪些网页是允许被抓取的,哪些网页是

禁止被抓取的。

当网络爬虫访问网站时,应先检查该网站的根目录下是否存在 robots.txt 文件。若 robots.txt

文件不存在,则网络爬虫能够访问该网站上所有没被口令保护的页面;若 robots.txt 文件存在,

则网络爬虫会按照该文件的内容确定访问的范围。

robots.txt 文件中的内容有着一套通用的写作规范。下面以豆瓣网站根目录下的 robots.txt

文件为例,分析 robots.txt 文件的语法规则。robots.txt 文件中的内容如下。

User-agent: *

Disallow: /subject_search

Disallow: /amazon_search

Disallow: /search

Disallow: /group/search

Disallow: /event/search

Disallow: /celebrities/search

Disallow: /location/drama/search

Disallow: /forum/

Disallow: /new_subject

Disallow: /service/iframe

Disallow: /j/

Disallow: /link2/

Disallow: /recommend/

Disallow: /doubanapp/card

Disallow: /update/topic/

Disallow: /share/

Allow: /ads.txt

Sitemap: https://www.douban.com/sitemap_index.xml

Sitemap: https://www.douban.com/sitemap_updated_index.xml

Crawl-delay: 5

User-agent: Wandoujia Spider

Disallow: /

User-agent: Mediapartners-Google

Disallow: /subject_search

Disallow: /amazon_search

Disallow: /search

Disallow: /group/search

Disallow: /event/search

Disallow: /celebrities/search

Disallow: /location/drama/search

Disallow: /j/

从上述内容可以看出,robots.txt 文件中包含了多行以 User-agent、Disallow、Allow、Sitemap

等开头的语句,并且若干行语句之间会以一个空行进行分隔。

在 robots.txt 文件中,以空行分隔的多行语句组成一条记录,每条记录通常以一行或多行

包含 User-agent 选项的语句开始,后面跟上若干行包含 Disallow 选项的语句,有时也会出现第 1 章 认识网络爬虫 005

一行或多行包含 Allow、Sitemap 选项的语句,它们的含义如下。

  • User-agent:用于指定网络爬虫的名称。若该选项的值为“*”,则说明 robots.txt 文

件对任何网络爬虫均有效。带有“*”的 User-agent 选项只能出现一次。例如,示例的第一条

语句 User-agent: *。

  • Disallow:用于指定网络爬虫禁止访问的目录。若 Disallow 选项的内容为空,说明

网站的任何内容都是被允许访问的。在 robots.txt 文件中,至少要有一条包含 Disallow 选项

的语句。例如,Disallow: /subject_search 表示禁止网络爬虫访问目录/subject_search。

  • Allow:用于指定网络爬虫允许访问的目录。例如,Allow: /ads.txt 表示允许网络爬

虫访问目录/ads.txt。

  • Sitemap:用于告知网络爬虫网站地图的路径。例如,Sitemap: https://www.douban.

com/sitemap_index.xml 和 https://www.douban.com/sitemap_updated_index.xml 这两个路径都是

网站地图,主要说明网站的更新时间、更新频率、网址重要程度等信息。

Robots 协议只是一个网站与网络爬虫之间达成的“君子”协议,它并不是计算机中的防

火墙,没有实际的约束力。如果把网站比作私人花园,那么 robots.txt 文件便是私人花园门口

的告示牌。这个告示牌上写有是否可以进入花园,以及进入花园后应该遵守的规则。但告示

牌并不是高高的围栏,它只对遵守协议的“君子”有用,对于违背协议的人而言并没有太大

的作用。

尽管 Robots 协议没有一定的强制约束力,但网络爬虫仍然要遵守协议,违背协议可能会

存在一定的法律风险。

1.3.2 防爬虫应对策略

随着网络爬虫技术的普及,互联网中出现了越来越多的网络爬虫,既有为搜索引擎采集

数据的网络爬虫,也有很多其他的开发者自己编写的网络爬虫。对于一个内容型驱动的网站

而言,被网络爬虫访问是不可避免的。

尽管网络爬虫履行着 Robots 协议,但是很多网络爬虫的抓取行为不太合理,经常同时发

送上百个请求重复访问网站。这种抓取行为会给网站的服务器增加巨大的处理开销,轻则降

低网站的访问速度,重则导致网站无法被访问,给网站造成一定的压力。

因此,网站管理员会根据网络爬虫的行为特点,从来访的客户端程序中甄选出网络爬虫,

并采取一些防爬虫措施来阻止网络爬虫的访问。与此同时,网络爬虫会采取一些应对策略继

续访问网站,常见的应对策略包括添加 User-Agent 字段、降低访问频率、设置代理服务器、

识别验证码,关于这几种应对策略的介绍如下。

1.添加 User-Agent 字段

浏览器在访问网站时会携带固定的 User-Agent(用户代理,用于描述浏览器的类型及版

本、操作系统及版本、浏览器插件、浏览器语言等信息),向网站表明自己的真实身份。

网络爬虫每次访问网站时可以模仿浏览器的上述行为,也就是在请求网页时携带

User-Agent,将自己伪装成一个浏览器,如此便可以绕过网站的检测,避免出现被网站服务器

直接拒绝访问的情况。006 Python 网络爬虫基础教程

2.降低访问频率

如果同一账户在较短的时间内多次访问了网站,那么网站运维人员会推断此种访问行为

可能是网络爬虫的行为,并将该账户加入黑名单以禁止其访问网站。为防止网站运维人员从

访问量上推断出网络爬虫的身份,可以降低网络爬虫访问网站的频率。不过,这种方式会降

低网络爬虫的抓取效率。为了弥补这个不足,可以适当地调整一些操作,如让网络爬虫每抓

取一次页面数据就休息几秒,或者限制每天抓取的网页的数量。

3.设置代理服务器

网络爬虫在访问网站时若反复使用同一 IP 地址,则极易被网站识别身份后屏蔽、阻止、

封禁等。此时可以在网络爬虫和 Web 服务器之间设置代理服务器。有了代理服务器之后,网

络爬虫会先将请求发送给代理服务器,代理服务器再转发给服务器,这时服务器记录的是代

理服务器的 IP 地址(简称代理 IP),而不是网络爬虫所在设备的 IP 地址。

互联网中有一些网站提供了大量的代理 IP,可以将这些代理 IP 进行存储,以备不时之

需。不过,很多代理 IP 的使用寿命非常短,需要通过一套完整的机制校验已有代理 IP 的

有效性。

4.识别验证码

有些网站在检测到某个客户端的 IP 地址访问次数过于频繁时,会要求该客户端进行登录

验证,并随机提供一个验证码。为了应对这种突发情况,网络爬虫除了要输入正确的账户密

码之外,还要像人类一样通过滑动或点击行为识别验证码,如此才能继续访问网站。由于验

证码的种类较多,不同的验证码需要采用不同的技术进行识别,具有一定的技术难度。

对于本节介绍的这些防爬虫的应对策略,大家只需有个印象即可,具体的操作会在后

文中介绍。


本文转载自: https://blog.csdn.net/weixin_49816293/article/details/139710017
版权归原作者 编程梦想家(大学生版) 所有, 如有侵权,请联系我们删除。

“认识网络爬虫(一看秒知)”的评论:

还没有评论