如何处理页面新近度在爬虫?

时间:2014-12-08 14:18:57

标签: web-crawler search-engine

我去年正在为搜索引擎构建一个爬虫,我们遇到了处理页面新近度的问题;页面随时间而变化,我们需要跟踪此更改并在我们知道他们更改了内容后重新抓取这些页面。

所以,我们要求我们的教授解决这个问题,他告诉我们要查找这些页面的站点地图。我们发现并非所有页面都包含可以帮助我们解决这个问题的站点地图,我们告诉他,所以他告诉我们一个奇怪的解决方案,在随机时间值之后重新抓取所有内容。

那说我已经尝试过调查这个问题而且我找不到任何有用的东西。因此,为了以最低的效率解决这个问题,我已经存储了我抓取的每个页面的散列值,然后在这个随机时间之后重新爬行时,我检查当前页面的散列值并比较最后保存的散列值。如果存在差异,我会重新抓取此页面。

我想知道是否有更有效的方式来跟踪网页新近度

1 个答案:

答案 0 :(得分:2)

嗯,这取决于页面是否使用约定。大多数主要网站将使用缓存控制标头(或最后修改和ETag)。如果您正在抓取的网站使用它们,那么这些应该告诉您页面何时更改。所以我认为最广泛的有效方法是检查这些东西并在它们存在时使用它们。如果它们不存在,那么您可以使用页面哈希方法,但是如果(例如)有问题的站点动态地在服务器上进行一些小的更改(例如当前日期),即使获取页面哈希也可能无法按预期工作/时间,渲染时间等)。