我想知道一些巨大的搜索引擎的重新抓取策略是如何工作的。例如,让我们考虑谷歌。我们知道Google正在使用动态时间间隔来重新抓取每个网站。假设根据谷歌动态区间,有10万个网站应该每10分钟重新抓取一次。因此,这些100000个站点的爬行过程应该在不到10分钟的时间内完成。可能有两种可能的情况:
1)google bot将获取每个网站的第一页,然后在此页面中生成网址列表。对于每个URL,它将检查是否先获取此URL。如果它是新的,它将获取新页面。此过程将持续到爬网结束或特定深度阈值。
2)谷歌机器人将再次获取每一页(无论它是否已更新)
假设谷歌使用第一个策略,那么具有相同网址但更新内容的网页将如何被抓取并编入索引?假设google使用第二个,那么它如何在不到10分钟内重新抓取所有这些页面?其他网页怎么样?可能有超过60亿的网页可以如何及时地重新抓取所有这些页面?我真的认为在hadoop基础设施上使用nutch和solr等新技术是不可能的。
问候。
答案 0 :(得分:1)
我们使用大量计算机来获取(或者#34;爬行")数十亿页 在网上。 Googlebot使用算法流程:计算机程序 确定要抓取的网站,频率以及要抓取的网页数 来自每个网站。
Googlebot的抓取过程以网页网址列表开头, 从以前的抓取过程生成并使用Sitemap进行扩充 网站管理员提供的数据。正如Googlebot访问其中的每一个 它检测每个页面上的链接(SRC和HREF)并将其添加到的网站 要抓取的页面列表。新网站,对现有网站的更改以及 注意到死链接并用于更新Google索引。
https://support.google.com/webmasters/answer/182072?hl=en
首先为什么要在10分钟内完成工作?
与第一段中一样,并非所有网站都以相同的间隔重新抓取。他们有一个算法来确定这一点。
所以googlebot会再次获取每一页,但间隔时间间隔非常不同。它的选项(2)在您的问题中,但添加了算法。
他们使用hadoop基础设施来实现可扩展性。