实战Python网络爬虫
上QQ阅读APP看书,第一时间看更新

1.4 爬虫的搜索策略

在互联网数据时代,有三大搜索策略需要有所了解,下面一一介绍。

1.深度优先搜索

深度优先搜索是在开发爬虫早期使用较多的方法,目的是达到被搜索结构的叶结点(那些不包含任何超级URL的HTML文件)。在一个HTML文件中,当一个URL被选择后,被选URL将执行深度优先搜索,搜索后得到新的HTML文件,再从新的HTML获取新的URL进行搜索,以此类推,不断地爬取HTML中的URL,直到HTML中没有URL为止。

深度优先搜索沿着HTML文件中的URL走到不能再深入为止,然后返回到某一个HTML文件,再继续选择该HTML文件中的其他URL。当不再有其他URL可选择时,说明搜索已经结束。其优点是能遍历一个Web站点或深层嵌套的文档集合。缺点是因为Web结构相当深,有可能造成一旦进去再也出不来的情况发生。

举个例子,比如一个网站的首页里面带有很多URL,深度优先通过首页的URL进入新的页面,然后通过这个页面里的URL再进入新的URL,不断地循环下去,直到返回的页面没有URL为止。如果首页有两个URL,选择第一个URL后,生成新的页面就不会返回首页,而是在新的页面选择一个新的URL,这样不停地访问下去。

2.宽度优先搜索

宽度优先搜索是搜索完一个Web页面中所有的URL,然后继续搜索下一层,直到底层为止。例如,首页中有3个URL,爬虫会选择其中之一,处理相应的页面之后,然后返回首页再爬取第二个URL,处理相应的页面,最后返回首页爬取第三个URL,处理第三个URL对应的页面。

一旦一层上的所有URL都被选择过,就可以开始在刚才处理过的页面中搜索其余的URL,这就保证了对浅层的优先处理。当遇到一个无穷尽的深层分支时,不会导致陷进深层文档中出不来的情况发生。宽度优先搜索策略还有一个优点,能够在两个页面之间找到最短路径。

宽度优先搜索策略通常是实现爬虫的最佳策略,因为它容易实现,而且具备大多数期望的功能。但是如果要遍历一个指定的站点或者深层嵌套的HTML文件集,用宽度优先搜索策略就需要花费较长时间才能到达最底层。

3.聚焦爬虫的爬行策略

聚焦爬虫的爬行策略只针对某个特定主题的页面,根据“最好优先原则”进行访问,快速、有效地获得更多与主题相关的页面,主要通过内容与Web的URL结构指导进行页面的抓取。聚焦爬虫会给所下载的页面一个评价分,根据得分排序插入一个队列中。最好下一个搜索对弹出队列的第一个页面进行分析后执行,这种策略保证爬虫能优先跟踪那些最有可能URL到目标页面的页面。

决定网络爬虫搜索策略的关键是评价URL价值,即URL价值的计算方法,不同的价值评价方法计算出的URL的价值不同,表现出的URL的“重要程度”也不同,从而决定不同的搜索策略。由于URL包含于页面之中,而通常具有较高价值的页面包含的URL也具有较高价值,因此对URL价值的评价有时也转换为对页面价值的评价。