关于深度优先和广度优先

在爬虫系统中,待抓取URL队列是很重要的一部分,待抓取URL队列中的URL以什么样的顺序排队列也是一个很重要的问题,因为这涉及到先抓取哪个页面,后抓取哪个页面。而决定这些URL排列顺序的方法,叫做抓取策略。下面是常用的两种策略:深度优先、广度优先 

 

scrapy框架默认的是深度优先算法

深度优先与广度优先算法避免爬虫运行的时候,需要返回造成数据重复

 

深度优先

这里是深度优先,所以这里的爬取的顺序式:
A-B-D-E-I-C-F-G-H (递归实现)

 

深度优先算法代码实现(伪代码):

 

 

广度优先:

 

广度优先,有人也叫宽度优先,是指将新下载网页发现的链接直接插入到待抓取URL队列的末尾,也就是指网络爬虫会先抓取起始页中的所有网页,然后在选择其中的一个连接网页,继续抓取在此网页中链接的所有网页,通过下图进行理解:

 

还是以这个图为例子,广度优先的爬取顺序为:
A-B-C-D-E-F-G-H-I (队列实现)

 

广度优先代码的实现(伪代码):

posted @ 2018-11-29 10:39  Corey0606  阅读(329)  评论(0编辑  收藏  举报