网页更新检测算法

时间:2012-04-20 17:22:28

标签: algorithm diff web-crawler

首先,我不是在寻找代码,只是简单地讨论关于主题所说的方法。

我最近想知道如何最好地检测(尽可能快)网站页面的变化,假设我有100K网站,每个网站都有未知数量的页面,爬虫真的需要访问每一个偶尔会有一个人吗?

1 个答案:

答案 0 :(得分:1)

除非他们有RSS提要(您仍然需要提取它以查看它们是否已更改),否则无论如何都无法找到网站何时更改,除非转到它并进行检查。但是,你可以做一些聪明的事情来提高效率。在您检查网站一段时间后,您可以建立一个他们倾向于更新的预测模型。例如:这个新闻网站每2-3小时更新一次,但该博客每周只发布一个帖子。这可以为您节省很多检查,因为大多数页面实际上并不经常更新。谷歌这样做是为了帮助它。一个简单的算法将适用于此(取决于您需要新闻的前沿程度)是我自己的基于二分搜索的设计:

Start each site off with a time interval ~ 1 day
Visit the sites when that time hits and check changes
if something has changed
    halve the time for that site
else
    double the time for that site
If after many iterations you find it hovering around 2-3 numbers 
    fix the time on the greater of the numbers

现在这是一个简单的算法,用于查找哪些时间适合检查,但如果您解析文本并在实际发布更新时查看模式,则可以执行更有效的操作。