【问题标题】:What does it mean if robots.txt allows everything and disallows everything?如果 robots.txt 允许所有内容而禁止所有内容,这意味着什么?
【发布时间】:2015-11-08 21:37:19
【问题描述】:

我正在尝试在 python 中使用漂亮的汤和机械化库来抓取几个网站。但是,我遇到了一个带有以下 robots.txt 的网站

User-Agent: *
Allow: /$
Disallow: /

根据维基百科,Allow 指令抵消了以下 Disallow 指令。我已经阅读了一些更简单的示例,并了解了它是如何工作的,但是这种情况对我来说有点令人困惑。 我是否可以假设允许我的爬虫访问该网站上的所有内容? 如果是的话,网站甚至会费心编写 robots.txt 似乎真的很奇怪......

额外信息: 当我试图抓取这个网站时,Mechanize 给了我一个错误,这个错误类似于Http error 403, crawling is prohibited because of robots.txt。如果我上面的假设是正确的,那么我认为 mechanize 在尝试访问该网站时返回错误的原因是因为它要么不具备处理此类 robots.txt 的能力,要么遵循不同的解释 robots.txt 文件的标准。 (在这种情况下,我只需要让我的爬虫忽略 robots.txt)

更新:

我偶然发现了这个问题

robots.txt allow root only, disallow everything else?

特别是我看了@eywu的回答,现在我觉得我最初的假设是错误的,我只被允许访问website.com而不是website.com/other-stuff

【问题讨论】:

    标签: python mechanize robots.txt


    【解决方案1】:

    您的更新是正确的。您可以访问http://example.com/,但不能访问http://example.com/page.htm

    这取自Robots.txt Specifications,请查看页面底部标题为“组成员记录的优先顺序”的部分,其中指出:

    URL allow:  disallow:   Verdict Comments
    http://example.com/page /p  /   allow    
    http://example.com/folder/page  /folder/    /folder allow    
    http://example.com/page.htm /page   /*.htm  undefined    
    http://example.com/ /$  /   allow    
    http://example.com/page.htm /$  /   disallow
    

    【讨论】:

    • 非常感谢,我不敢相信我没有先阅读 Robots.txt 规范:D
    • 没问题,2双眼睛总比1双好。
    【解决方案2】:

    不行,你的爬虫只能访问首页。

    Allow 指令允许您访问/$$ 在这里很重要!这意味着只有文字 / 路径匹配,根据 Disallow 指令,不允许任何其他路径(如 /foo/bar),它匹配所有路径(它没有 $)。

    Google documentation on path matching

    1. $ 指定 URL 的结尾

    Mechanize 正确解释了robots.txt 文件。

    【讨论】:

    • 感谢您的回答!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 2016-06-28
    • 2020-11-30
    • 1970-01-01
    • 1970-01-01
    • 2017-10-26
    相关资源
    最近更新 更多