java爬虫技术之爬取策略

java爬虫技术之爬取策略
java爬虫技术之爬取策略

java爬虫技术—内功修炼之网络爬虫爬取策略(三)

在小奇及同门经过一段时间的知识消化和休息之后,传功长老又开始讲解自己的爬虫经验与技巧。

接下来主要说一下网络爬虫的爬取策略:

深度优先策略:深度优先遍历策略是指网络爬虫从起始页开始,一个链接一个链接跟踪下去,处理完这条线路之后再转入下一个起始页,继续跟踪,直至结束。如图:深度优先采集规则:先采集A-F-G这条线再采集E-H-I这条线软后再采集B C D节点。

深度优先策略是一种在开发爬虫工具早期使用较多的方法。它的目的是要达到被搜索网页结构的叶节点(即那些不包含任何超链接的HTML文件)。在一个HTML文件中,当一个超链接被选择后,被链接的HTML文件将执行深度优先搜索,即在搜索其余的超链接结果之前必须先完整的搜索单独的一条链。深度优先搜索沿着HTML文件上的超链接直到不能在深入为止,然后返回到某一个HTML文件,再继续选择该HTML文件中的其他超链接。当不再有超链接可选择时,说明搜索已经结束。

优点:能遍历一个web站点或深层次嵌套的文档集合。缺点:因为web结构相当深,有可能是死循环,有一旦进去就可能再也出不来的情况的发生。

宽度优先策略:宽度优先策略的基本思路:将新下载网页中发现的超链接直接插入到待抓取URL队列的末尾。也就是指网络爬虫会先抓取网页中所有链接的

所有网页,然后再选择其中一个链接网页继续抓取在此网页中的所有网页。宽度优先采集的规则,如右图:采集顺序为A-B-C-D-F 再采集G H I。

在宽度优先搜索中,先搜索完一个web页面中所有的超链接,然后再继续搜索下一层,直到底层为止。例如:一个HTML网页文件中有三个超链接,选择其中之一并处理相应的HTML文件,然后不再继续选择第二个HTML文件中的任何超链接,而是返回并选择第二个超链接,处理相应的HTML文件,再返回选择第三个超链接并处理相应的HTML文件。一旦一层上的所有超链接都已被选择,就可以开始在刚才处理过的HTML文件中搜索的其余的超链接。这就保证了对浅层的首先处理。当遇到一个无穷无尽的深层分支时,不会导致陷入死循环当中出不来的情况方生。

宽度优先策略优点:它能在两个HTML文件之间找到最短路径。宽度优先策略通常是实现爬虫的最佳策略,因为他容易实现,而且具备大多数期望的功能。缺点:如果要遍历一个指定的站点或者深层嵌套的HTML网页集用宽度优先搜索则需要花费比较长的时间才能到达深层次的HTML文件。

综合上述:考虑以上几种策略和国内信息导航系统搜索信息的特点,国内一般采用宽度优先策略为主,线形搜索策略为辅的爬取策略。对于某些不被引用或很少被引用的HTML文件,宽度优先策略可能会遗漏这些孤立的信息源,可以使用线性搜索策略作为爬取的补充。

非完全PageRank策略:PageRank算法是谷歌搜索引擎页面抓取采用的算法。非完全PageRank策略基本思路是对于已经下载的网页,加上待抓取URL队列中的URL一起,形成网页集合,在此集合内进行PageRank计算,计算完成后,将待抓取URL队列里的网页按照PageRank得分由高到低排序,形成的序列就是爬虫接下来应该依次抓取的URL列表。缺点:如果每次新抓取到一个网页,就进

行重新计算新的非完全PageRank,明显效率太低。折中办法是网页攒够K个计算一次。

OCIP策略(Online Page Importance Computation)即在线页面重要性计算基本思路:在算法开始之前,每个互联网页面都给予相同的“现金”,每当下载了某个页面P后,P就将自己拥有的现金平均分配给页面中包含的链接页面,把自己的“现金”清空。而对于待爬取URL队列中的网页,则根据其手头拥有的“现金”金额多少排序,优先下载“现金”最多的网页,OPIC从大的框架上与PageRank思路基本一致。与PageRank的区别在于:PageRank每次需要迭代计算,而OPIC 策略不需要迭代过程。所以计算速度远远快与PageRank,适合实时计算使用。同时,PageRank在计算时,存在向无链接关系网页的远程跳转过程,而OPIC没有这一计算因子。实验结果表明,OPIC是较好的重要性衡量策略,效果略优于宽度优化遍历策略。

大站优先策略(Larger Sites First)大站优先策略思路:以网站为单位来选题网页重要性,对于待爬取URL队列中的网页,根据所属网站归类,如果哪个网站等待下载的页面最多,则优先下载这些链接,其本质思想倾向于优先下载大型网站。因为大型网站往往包含更多的页面。鉴于大型网站往往是著名企业的内容,其网页质量一般较高,所以这个思路虽然简单,但是有一定依据。实验表明这个算法效果也要略优先于宽度优先遍历策略。

看着听得仅仅有味的弟子们,长老露出欣慰的笑容。然后问道:通过以上抓取策略的讲解我们平时应该用那种搜索策略呢?

小奇和师兄弟们相互看了一眼,脸上都流露出思考的神色。

相关主题
相关文档
最新文档