一、背景
Spider 位于搜索引擎数据流的最上游,负责将互联网上的资源采集到本地,提供给后续检索使用,是搜索引擎的最主要数据来源之一。
spider 系统的目标就是发现并抓取互联网中一切有价值的网页,为达到这个目标,首先就是发现有价值网页的链接,当前spider 有多种链接发现机制来尽量快而全的发现资源链接,本文主要描述 其中一种针对特定索引页的链接补全机制,并给出对这种特定类型的索引页面的建议处理规范用于优化收录效果。
当前大多数互联网网站以索引页和翻页的 形式来组织网站资源,当有新资源增加 时,老资源往后推移到翻页系列中。
如下图所示:
图表 1 http://roll.news.sina.com.cn/news/gnxw/gdxw1/index.shtml
图 2 为 18 小时后该网页翻页系列的第四页的内容,在这段时间内新增了三页多的资源。
图 1 中红色矩阵圈到的资源在 18 个小时后已经往后有序推移到第 4 页的红色方 块处。
图表 2 在18 小时后第四页http://roll.news.sina.com.cn/news/gnxw/gdxw1/index.shtml
对 spider 来说,这种特定类型的索引页是 资源链接发现的一种有效渠道,但是由于spider 是定期检查这些网页来获得新增的 资源链接,检查的周期同资源链接发布的周期不可避免会有不同(spider 会尽量探 测网页的发布周期,以合理的频率来检查 网页),周期不同的时候,资源链接很有 可能就被推到翻页序列中,所以 spider 需要对这种特殊类型的翻页系列作翻页补全,从而保证收录资源的完全。
二、主要思路
本文主要讨论这种资源按发布时间有序排布的网页,即新发布的资源排布在翻页第 1 页(或翻页最后一页),老的资源往后 (或者往前)有序推移的索引页的补全机 制。
主要思路是将整个翻页系列的网页看 成一个整体,综合判定它们的抓取状态, 通过记录每次抓取网页发现的资源链接, 然后将此次发现的资源链接与历史上发现 的资源链接作比较,如果有交集,说明该次抓取发现了所有的新增资源;否则,说明该次抓取并未发现所有的新增资源,需要继续抓取下一页甚至下几页来发现所有的新增资源。
2.1 资源链接是否按照时间排序
判断资源是否按发布时间排布是这类页面的一个必要条件,那么如何判断资源是否按发布时间排布呢?如上面图 1 所示,有 些页面中每个资源链接后面跟随着对应的 发布时间,通过资源链接对应的时间集合,判断时间集合是否按大到小或小到大排序,如果是的话,则说明网页中的资源 是按发布时间有序排布,反之亦然。图 1 中资源从上到下对应的时间是越来越小 的,即是资源按发布时间有序的。
还有一类网页,网页内容中有多种排序方式,如按销量排序,按价格排序,如评论数排序,按上架时间排 序。通过识别和提取当前的排序方式,然后判断当前的排序方式是否为按时间排 序,如果是,则说明网页中的资源是按发 布时间有序排布,反之亦然。
排序方式是按上架时间排序,属于时间排序方式,所以该网页发布的资源是按发布时 间有序的。另外也会根据资源链接抓回后提取的发布 时间综合判断。
2.2 补全机制
对于按发布时间有序排布在索引页系列的 资源链接,如何保证新发布的资源都被收录呢?
如上述所说,在 18 个小时后,图 1 中的资源链接已经往后有序推移到翻页第 4 页了,如此看,这段时间内新增了翻页 第 2,3,4 页索引的资源链接。
那么,spider 就需要完全的收录这些新增的资源;首先,当 spider 抓取 18 小时后的第 1 页 时,将新发现的资源链接集合,与上一次 18 小时前第 1 页索引页调度记录的资源链 接集合作比较,会发现两次调度发现的资 源链接没有交集,所以就可能存在漏链。
进而需要继续发起第 2 页的调度,第 2 页 发现的资源链接集合与之仍然没有交集, 所以还可能存在漏链,继续发起第 3 页。
第 4 页的调度,最终如图 2 所示,红框中 的链接与上一次索引页调度记录的资源链 接有交集,因此可以断定已经补全了这段 时间内新增的资源,从而结束翻页系列的 调度,并保证了该翻页系列的所有链接的补全,从而提升搜索产品的收录效果。
2.3 翻页条的识别和翻页条对应的 链接序列区块的识别
为了达到上面的效果,除了需要识别翻页 系列的排序方式是不是按照时间排序,还 需要识别索引页中的翻页条和其对应的链 接区块。
因为没有翻页条的识别,spider 系统就不 可能把这个翻页序列的所有链接绑定起 来,整体考虑它们的状态,那么调度抓取 的结果就是随机的,从而不能保证补全效 果,当前通过网页中的翻页的一系列特 征,通过机器学习的方法来识别网页中的 翻页区块和翻页深度,以及上一页,下一 页的链接,从而为上述补全机制提供基本 数据。
另外一方面,即使有了翻页条的识别,没有对应链接区块的识别,上述补全机制还 是不能工作,因为上述机制需要对比发现 的链接的集合来判定终止条件,所以,也 需要识别翻页条对应的链接区块,从而提 供翻页终止条件。
特殊情况下,一个网页可能包含多个翻页条,这种情况更需要进行翻页条和链接区 块的对应。
三、建议的方法和标准
当前百度 spider 系统对网页的类型,网页中翻页条的位置,翻页条对应的索引列 表,以及列表是否按照时间排序都会做相 应的判断,并根据实际的情况进行处理,但是机器自动的判断方法毕竟不能做到 100%的识别准确率,所以如果站长能够 通过在页面中添加一些百度推荐的标签来 标志相应的功能区域,就可以极大地提高 我们识别的准确率,从而提高 spider 系统 对网站资源发现的即时性,从而提高网站的收录效果。
Spider 链接补全当前最关心的是网页的翻 页条和翻页条对应的索引链接列表的区 块,所以可以通过区块的元素(譬如 div,ul)的 class 属性来标志相应的特 征,供百度spider 识别使用,建议使用下 面的属性来标志:
表 1 支持的 CLASS 扩展属性
譬如百度新闻的页面可以这样设置:对翻页条对应的区块元素 p 可以设置 class 属性 Baidu_paging_indicator,对该翻页条对应的主体链接的区块元素 div,设置 Baidu_paging_content_indicatorOrderby_posttime,这样翻页条和对应的 链接区块就对应起来,并且告知了百度是 按照发布时间排序的,从而可以优化 spider 系统的抓取行为,改善站点的收录效果。
四、总结
除了上面说明的链接发现方法,Baidu的抓取系统还有非常多的其他手段来保证对有价值网站的收录覆盖率,上述方法只是针对特定索引页类型而采取的一种特定的 手段,互联网站长可以参考使用。
站长也可以通过 spider 的百度站长平台来了解如何获得更快更好的网站收录效果,譬如直接通过sitemap 协议推送链接。
赞赏微信赞赏
支付宝赞赏