了解入门爬虫技术原理,看这篇就够了

2018-04-17 14:24 稿源:人人都是产品经理  0条评论

注:爬虫技术就是一个高效的下载系统,能够将海量的网页数据传送到本地,在本地形成互联网网页的镜像备份。本文从爬虫技术的诞生开始,为你详细解析爬虫技术原理。

文/Kevin

一、爬虫系统的诞生

通用搜索引擎的处理对象是互联网网页,目前互联网网页的数量已达百亿,所以搜索引擎首先面临的问题是:如何能够设计出高效的下载系统,以将如此海量的网页数据传送到本地,在本地形成互联网网页的镜像备份。

网络爬虫能够起到这样的作用,完成此项艰巨的任务,它是搜索引擎系统中很关键也很基础的构件。

本文主要介绍与网络爬虫相关的技术,尽管爬虫经过几十年的发展,从整体框架上来看已经相对成熟,但随着互联网的不断发展,也面临着一些新的挑战。

二、通用爬虫技术框架

爬虫系统首先从互联网页面中精心选择一部分网页,以这些网页的链接地址作为种子URL,将这些种子放入待抓取URL队列中,爬虫从待抓取URL队列依次读取,并将URL通过DNS解析,把链接地址转换为网站服务器对应的IP地址。

然后将其和网页相对路径名称交给网页下载器,网页下载器负责页面的下载。

对于下载到本地的网页,一方面将其存储到页面库中,等待建立索引等后续处理;另一方面将下载网页的URL放入已抓取队列中,这个队列记录了爬虫系统已经下载过的网页URL,以避免系统的重复抓取。

对于刚下载的网页,从中抽取出包含的所有链接信息,并在已下载的URL队列中进行检查,如果发现链接还没有被抓取过,则放到待抓取URL队列的末尾。在之后的抓取调度中会下载这个URL对应的网页。

如此这般,形成循环,直到待抓取URL队列为空,这代表着爬虫系统将能够抓取的网页已经悉数抓完,此时完成了一轮完整的抓取过程。

通用爬虫架构

上述是一个通用爬虫的整体流程,如果从更加宏观的角度考虑,处于动态抓取过程中的爬虫和互联网所有网页之间的关系,可以概括为以下 5 个部分:

  • 已下载网页结合:爬虫已经从互联网下载到本地进行索引的网页集合。

  • 已过期网页结合:由于网页数量庞大,爬虫完整抓取一轮需要较长时间,在抓取过程中,很多已下载的网页可能已经更新了,从而导致过期。之所以如此,是因为互联网网页处于不断的动态变化过程中,所以易产生本地网页内容和真实互联网不一致的情况。

  • 待下载网页集合:处于待抓取URL队列中的网页,这些网页即将被爬虫下载。

  • 可知网页集合:这些网页还没有被爬虫下载,也没有出现在待抓取URL队列中,通过已经抓取的网页或者在待抓取URL队列中的网页,总是能够通过链接关系发现它们,稍晚时候会被爬虫抓取并索引。

  • 未知网页集合:有些网页对于爬虫是无法抓取到的,这部分网页构成了未知网页结合。事实上,这部分网页所占的比例很高。

互联网页面划分

从理解爬虫的角度看,对互联网网页给出如上划分有助于深入理解搜索引擎爬虫所面临的主要任务和挑战。绝大多数爬虫系统遵循上文的流程,但是并非所有的爬虫系统都如此一致。根据具体应用的不同,爬虫系统在许多方面存在差异,大体而已,可以将爬虫系统分为如下 3 种类型:

1.批量型爬虫:批量型爬虫有比较明确的抓取范围和目标,当爬虫达到这个设定的目标后,即停止抓取过程。

至于具体目标可能各异,也许是设定抓取一定数量的网页即可,也许是设定抓取的时间等,各不一样。

2.增量型爬虫:增量型爬虫与批量型爬虫不同,会保持持续不断的抓取,对于抓取到的网页,要定期更新。

因为互联网网页处于不断变化中,新增网页、网页被删除或者网页内容更改都很常见,而增量型爬虫需要及时反映这种变化,所以处于持续不断的抓取过程中,不是在抓取新网页,就是在更新已有网页。通用的商业搜索引擎爬虫基本都属此类。

3.垂直型爬虫:垂直型爬虫关注特定主题内容或者属于特定行业的网页,比如对于健康网站来说,只需要从互联网页面里找到与健康相关的页面内容即可,其他行业的内容不在考虑范围。

垂直型爬虫一个最大的特点和难点就是:如何识别网页内容是否属于指定行业或主题。

从节省系统资源的角度来讲,不可能把所有互联网页面下载之后在进行筛选,这样会造成资源过度浪费,往往需要爬虫在抓取阶段就能够动态识别某个网址是否与主题相关,并尽量不去抓取无关页面,以达到节省资源的目的。垂直搜索网站或者垂直行业网站往往需要此种类型的爬虫。

有好的文章希望站长之家帮助分享推广,猛戳这里我要投稿

相关文章

相关热点

查看更多