笔记-爬虫算法

笔记-爬虫算法  

1.网站结构

网站结构一般情况下可以简化为一个树状

 

2.爬虫算法

在大规模爬虫系统中,待抓取url队列是很重要的一部分,队列顺序也是很重要的内容;爬虫算法就是用于决定抓取先后顺序的。

下文将介绍目前常用的算法:

1.深度优先:

深度优先是指网络爬虫会从起始页开始,一个链接一个链接跟踪下去,处理完这条线路之后再转入下一个起始页,继续追踪链接;

一般通过递归实现;

缺点在于部分网页深度太深而效率较低或绕不出来了;

scrapy默认使用深度优先;

 

2.宽度优先

是指将新下载网页发现的链接直接插入到待抓取URL队列的末尾;

使用队列实现;

上述两种方法是最基础的遍历,下面几种方法都是对网页内容进行分析来决定链接的优先级;

 

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队列中的所有网页,根据所属的网站进行分类。对于待下载页面数多的网站,优先下载。这个策略也因此叫做大站优先策略。

 

posted @ 2018-05-25 16:05  木林森__𣛧  阅读(382)  评论(0)    收藏  举报