【问题标题】:Spider interval for robots.txtrobots.txt 的蜘蛛间隔
【发布时间】:2011-07-12 07:53:17
【问题描述】:

我一直在阅读有关网络爬虫的内容,并获得了一份充满考虑的清单,但是有一个问题我还没有找到任何讨论。

应该多久为任何给定网站提取 robots.txt?

我的情况是,对于任何特定网站,爬网速度非常慢,每天可能有 100 个页面。 假设一个网站添加了一个新部分(/humans-only/),其他页面链接到该部分。同时在 robots.txt 中添加相应的行。蜘蛛可能会在更新 robots.txt 之前找到指向此部分的链接。

有趣的是,写下一个问题如何给出解决方案。 在提出上述问题时,我想到了一个解决方案。

robots.txt 可以很少更新,例如每天一次。 但是所有新发现的链接都应该放在队列中,直到下一次更新 robots.txt。 robots.txt 更新后,现在可以抓取所有通过的未决链接。

对此有任何其他想法或实践经验吗?

【问题讨论】:

    标签: web-crawler robots.txt


    【解决方案1】:

    所有大型网络爬虫都会缓存 robots.txt 一段时间。一天很常见,过去我见过长达一周的时间。我们的爬虫缓存时间最长为 24 小时。在实践中,它通常比我们经常抓取的网站要少。

    如果您保留链接以等待 robots.txt 的未来版本,那么您将人为地增加了 24 小时的抓取延迟。也就是说,如果您今天抓取我的网站,那么您必须保留所有这些链接长达 24 小时,然后再次下载我的 robots.txt 文件并验证您抓取的链接当时是否被允许。你可能会经常犯错,就像你是对的一样。假设发生以下情况:

    2011-03-08 06:00:00 - You download my robots.txt
    2011-03-08 08:00:00 - You crawl the /humans-only/ directory on my site
    2011-03-08 22:00:00 - I change my robots.txt to restrict crawlers from accessing /humans-only/
    2011-03-09 06:30:00 - You download my robots.txt and throw out the /humans-only/ links.
    

    在您抓取时,您被允许访问该目录,因此您发布链接没有问题。

    您可以使用下载 robots.txt 时 Web 服务器返回的最后修改日期来确定您当时是否被允许读取这些文件,但是很多服务器在返回最后修改日期时都存在问题。很大一部分(我不记得它是什么)总是返回当前日期/时间作为最后修改的日期,因为它们的所有内容,包括 robots.txt,都是在访问时生成的。

    此外,向您的机器人添加该限制意味着即使您不打算抓取他们的网站,您也必须再次访问他们的 robots.txt 文件。否则,链接将在您的缓存中失效。您提出的技术提出了许多您无法优雅处理的问题。最好的办法是使用手头的信息进行操作。

    大多数网站运营商都了解 robots.txt 缓存,如果您的机器人在 robots.txt 更改后的 24 小时内访问了他们网站上的受限目录,他们就会另眼相看。当然,前提是您没有阅读 robots.txt 然后继续抓取受限页面。在少数质疑这种行为的人中,对所发生的事情进行简单的解释通常就足够了。

    只要您对自己的爬虫所做的事情持开放态度,并为网站运营商提供与您联系的方式,大多数误解都会很容易得到纠正。有少数人——极少数人——会指控你从事各种邪恶的活动。你最好的办法是为造成问题道歉,然后阻止你的机器人访问他们的网站。

    【讨论】:

    • 如果页面的地址出现在 robots.txt 中,难道你不应该删除页面的缓存,就像页面会返回 404 一样?当然我对历史不感兴趣,所以这里可能会有所不同。
    • @hultqvist 我会说这是最安全的做事方式,以防万一......不要保留 robots.txt 告诉你的数据,你一开始就不应该得到。但是,这意味着每次加载他们的 robots.txt 时,您都需要重新检查您之前已加载的网页的所有 URL。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-11
    • 2012-01-23
    • 2011-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多