Spider的抓取策略
在大型搜索引擎Spider的抓取过程中会有很多策略,有时也可能是多种策略综合使用。这里简单介绍一下比较简单的Spider抓取策略,以辅助大家对Spider工作流程的理解。Spider抓取网页,在争取抓取尽可能多网页的前提下,首先要注意的就是避免重复抓取,为此Spider程序一般会建立已抓取URL列表和待抓取URL列表(实际中是由哈希表来记录URL的两个状态)。在抓取到一个新页面时,提取该页面上的链接,并把提取到的链接和已抓取URL列表中的链接进行逐一对比,如果发现该链接已经抓取过,就会直接丢弃,如果发现该链接还未抓取,就会把该链接放到待抓取URL队列的末尾等待抓取。
Spider眼中的互联网网页可以分为以下四类
(1)已经抓取过的页面,即Spider已经抓取过的页面。
(2)待抓取页面,也就是这些页面的URL已经被Spider加入到了待抓取URL队列中,只是还没有进行抓取。
(3)可抓取页面,Spider根据互联网上的链接关系最终是可以找到这些页面的,也就是说当下可能还不知道这些页面的存在,但是随着Spider增量型的抓取,最终会发现这些页面的存在。
(4)暗网中的页面,这些网页和表层网络上的网页是脱钩的,可能这些页面中有链接指向以上三类网页,但是通过以上三类网页并不能找到这些页面,比如,网站内需要手动提交查询才能获得的网页,就属于暗网中的网页,据估计暗网要比非暗网大几个数量级。
全文搜索引擎的Spider一直致力于抓取全网的数据,现在Spider对于非暗网网页已经具备大量高效的抓取策略。对于暗网的抓取,各个搜索引擎都在努力研究自己不同的暗网Spider抓取策略,百度对此推出了“阿拉丁”计划,鼓励有优质资源的网站把站内资源直接以当Spider从一个入口网页开始抓取时,会获得这个页面上所有的导出链接,当Spider随机抓取其中的一个链接时,同样又会收集到很多新的链接。此时Spider面临一个抓取方式的选择:
(1)先沿着一条链接一层一层地抓取下去,直到这个链接抓到尽头,再返回来按照同样的规则抓取其他链接,也就是深度优先抓取策略。
(2)还是先把入口页面中的链接抓取一遍,把新发现的URL依次进行入库排列,然后对这些新发现的页面进行遍历抓取,再把最新发现的URL进行入库排列等待抓取,依次抓取下去,也就是广度优先抓取策略。