基于 IP 地址与主机名与域名的抓取延迟

Crawl delay based on IP address vs hostname vs domain name

例如在抓取 Whosebug 的情况下,根据 hostname/domain 名称延迟是有意义的(例如每 10 分钟向 whosebug.com 发送请求)

在 *.blogspot.com 的情况下,只有基于域名延迟请求才有意义,因为有数以百万计的主机名以 .blogspot.com 结尾,基于域名的延迟会淹没服务器有数百万个请求。

在抓取范围广泛的网站(网络规模抓取)时,在请求之间施加延迟方面的最佳做法是什么?我应该根据 IP 地址、主机名还是域名延迟请求?

使用 Nutch 按 IP 分区是一种很好的做法。由于 IP 解析,生成步骤需要更长的时间,但您可以保证 Fetcher 在保持良好性能的同时表现得礼貌。 robots.txt 中的礼貌设置无论如何都会被强制执行。

我已经使用 Nutch 完成了数十亿页的抓取,根据经验,按 IP 对 URL 进行分组是最佳选择。您最不想看到的就是被网站列入黑名单,或者更糟的是,AWS(或您 运行 使用的任何云提供商)将您踢出局。许多网站管理员甚至不知道 robots.txt,如果他们认为您的爬虫是辱骂性的,他们会非常防御 - 即使您打算礼貌地爬行。规模越大越谨慎