网络爬虫

 网络爬虫是捜索引擎抓取系统的重要组成部分。算法

爬虫的主要目的是将互联网上的网页下载到本地造成一个或联网内容的镜像备份。网络

这篇博客主要对爬虫以及抓取系统进行一个简单的概述。框架

1、网络爬虫的基本结构及工做流程网站

    一个通用的网络爬虫的框架如图所示:搜索引擎

    网络爬虫的基本工做流程以下:blog

    1.首先选取一部分精心挑选的种子URL;排序

    2.将这些URL放入待抓取URL队列;索引

    3.从待抓取URL队列中取出待抓取在URL,解析DNS,而且获得主机的ip,并将URL对应的网页下载下来,存储进已下载网页库中。此外,将这些URL放进已抓取URL队列。队列

    4.分析已抓取URL队列中的URL,分析其中的其余URL,而且将URL放入待抓取URL队列,从而进入下一个循环。ip

2、从爬虫的角度对互联网进行划分

    对应的,能够将互联网的全部页面分为五个部分:

    1.已下载未过时网页

    2.已下载已过时网页:抓取到的网页其实是互联网内容的一个镜像与备份,互联网是动态变化的,一部分互联网上的内容已经发生了变化,这时,这部分抓取到的网页就已通过期了。

    3.待下载网页:也就是待抓取URL队列中的那些页面

    4.可知网页:尚未抓取下来,也没有在待抓取URL队列中,可是能够经过对已抓取页面或者待抓取URL对应页面进行分析获取到的URL,认为是可知网页。

    5.还有一部分网页,爬虫是没法直接抓取下载的。称为不可知网页。

3、抓取策略

    在爬虫系统中,待抓取URL队列是很重要的一部分。待抓取URL队列中的URL以什么样的顺序排列也是一个很重要的问题,由于这涉及到先抓取那个页面,后抓取哪一个页面。而决定这些URL排列顺序的方法,叫作抓取策略。下面重点介绍几种常见的抓取策略:

    1.深度优先遍历策略

深度优先遍历策略是指网络爬虫会从起始页开始,一个连接一个连接跟踪下去,处理完这条线路以后再转入下一个起始页,继续跟踪连接。咱们如下面的图为例:

    遍历的路径:A-F-G  E-H-I B C D

    2.宽度优先遍历策略

    宽度优先遍历策略的基本思路是,将新下载网页中发现的连接直接插入待抓取URL队列的末尾。也就是指网络爬虫会先抓取起始网页中连接的全部网页,而后再选择其中的一个连接网页,继续抓取在此网页中连接的全部网页。仍是以上面的图为例:

    遍历路径:A-B-C-D-E-F G H I

    3.反向连接数策略

    反向连接数是指一个网页被其余网页连接指向的数量。反向连接数表示的是一个网页的内容受到其余人的推荐的程度。所以,不少时候搜索引擎的抓取系统会使用这个指标来评价网页的重要程度,从而决定不一样网页的抓取前后顺序。

    在真实的网络环境中,因为广告连接、做弊连接的存在,反向连接数不能彻底等他我那个也的重要程度。所以,搜索引擎每每考虑一些可靠的反向连接数。

    4.Partial PageRank策略

    Partial PageRank算法借鉴了PageRank算法的思想:对于已经下载的网页,连同待抓取URL队列中的URL,造成网页集合,计算每一个页面的PageRank值,计算完以后,将待抓取URL队列中的URL按照PageRank值的大小排列,并按照该顺序抓取页面。

    若是每次抓取一个页面,就从新计算PageRank值,一种折中方案是:每抓取K个页面后,从新计算一次PageRank值。可是这种状况还会有一个问题:对于已经下载下来的页面中分析出的连接,也就是咱们以前提到的未知网页那一部分,暂时是没有PageRank值的。为了解决这个问题,会给这些页面一个临时的PageRank值:将这个网页全部入链传递进来的PageRank值进行汇总,这样就造成了该未知页面的PageRank值,从而参与排序。下面举例说明:

    5.OPIC策略策略

    该算法实际上也是对页面进行一个重要性打分。在算法开始前,给全部页面一个相同的初始现金(cash)。当下载了某个页面P以后,将P的现金分摊给全部从P中分析出的连接,而且将P的现金清空。对于待抓取URL队列中的全部页面按照现金数进行排序。

    6.大站优先策略

    对于待抓取URL队列中的全部网页,根据所属的网站进行分类。对于待下载页面数多的网站,优先下载。这个策略也所以叫作大站优先策略。