hul*_*ist 3 robots.txt web-crawler
我一直在阅读关于网络爬行的内容并得到了一个充满考虑因素的列表,但有一个问题我还没有找到任何讨论.
对于任何给定的站点,robots.txt应该多久被提取一次?
我的方案是,对于任何特定站点,每天可能有100页非常慢的爬行.让我们说一个网站添加了一个新的部分(/ human-only /),其他页面链接到该部分.同时在robots.txt中添加相应的行.在更新robots.txt之前,蜘蛛可能会找到此部分的链接.
写下问题的有趣方式给出了解决方案.在制定上述问题时,我想到了一个解决方案.
robots.txt很少更新,比如一天一次.但是所有新发现的链接都应该保留在队列中,直到robots.txt的下次更新为止.robots.txt更新后,现在可以抓取所有通过的待处理链接.
有这个的任何其他想法或实践经验?
所有大型Web爬虫都会在一段时间内缓存robots.txt.有一天很常见,过去我见过的时间长达一周.我们的抓取工具的最长缓存时间为24小时.在实践中,除了我们经常抓取的网站之外,它通常少于那个.
如果您保留链接以等待robots.txt的未来版本,那么您将为您的抓取添加一个24小时的人工延迟.也就是说,如果您今天抓取我的网站,那么您必须在再次下载我的robots.txt文件之前保留所有这些链接长达24小时,并确认当时允许您抓取的链接.而且你可能会错,因为你是对的.假设发生以下情况:
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.
Run Code Online (Sandbox Code Playgroud)
在您抓取时,您被允许访问该目录,因此您发布链接没有问题.
下载robots.txt时,您可以使用Web服务器返回的上次修改日期,以确定当时是否允许您读取这些文件,但返回上次修改日期时会有很多服务器谎言.一些大的百分比(我不记得它是什么)总是将当前日期/时间作为最后修改日期返回,因为它们的所有内容(包括robots.txt)都是在访问时生成的.
此外,将此限制添加到您的机器人意味着即使您不打算抓取其网站,也必须再次访问他们的robots.txt文件.否则,链接将在缓存中萎缩.您提出的技术会引发许多您无法优雅处理的问题.您最好的选择是使用您手边的信息进行操作.
大多数网站运营商都了解robots.txt缓存,如果您的机器人在robots.txt更改后的24小时内访问其网站上的受限目录,则会以相反的方式查看.当然,提供的是您没有阅读robots.txt,然后继续抓取受限制的页面.在那些质疑这种行为的少数人中,对所发生事件的简单解释通常就足够了.
只要您对爬虫正在做什么开放,并为站点操作员提供与您联系的方式,大多数误解都很容易纠正.有几个人 - 很少 - 会指责你进行各种邪恶的活动.与他们最好的赌注是为导致问题而道歉,然后阻止您的机器人访问他们的网站.