Python 如果robots.txt允许一切,不允许一切,这意味着什么?
我正在尝试使用python中的BeautifulSoup和mechanize库来抓取几个网站。然而,我发现一个网站有以下robots.txtPython 如果robots.txt允许一切,不允许一切,这意味着什么?,python,mechanize,robots.txt,Python,Mechanize,Robots.txt,我正在尝试使用python中的BeautifulSoup和mechanize库来抓取几个网站。然而,我发现一个网站有以下robots.txt User-Agent: * Allow: /$ Disallow: / 根据维基百科的说法,Allow指令抵消了下面的Disallow指令。我读过一些简单的例子,并且理解它是如何工作的,但是这种情况对我来说有点混乱我认为我的爬虫程序可以访问此网站上的所有内容,对吗? 如果是的话,这似乎真的很奇怪,该网站甚至会麻烦写robots.txt放在首位 额外信息:
User-Agent: *
Allow: /$
Disallow: /
根据维基百科的说法,Allow指令抵消了下面的Disallow指令。我读过一些简单的例子,并且理解它是如何工作的,但是这种情况对我来说有点混乱我认为我的爬虫程序可以访问此网站上的所有内容,对吗?
如果是的话,这似乎真的很奇怪,该网站甚至会麻烦写robots.txt放在首位
额外信息:
Mechanize给了我一个错误,当我试图刮这个网站,错误是沿着Http错误403,爬行是禁止的,因为robots.txt
。如果我上面所说的假设是正确的,那么我认为mechanize在尝试访问网站时返回错误的原因是因为它没有配备处理此类robots.txt的设备,或者它遵循不同的解释robots.txt文件的标准。(在这种情况下,我只能让我的爬虫忽略robots.txt)
更新:
我偶然发现了这个问题
特别是,我看了@eywu的答案,现在我认为我最初的假设是错误的,我只能访问website.com,但不能访问website.com/other-stuff不,你的爬虫程序只能访问主页
Allow
指令允许您访问/$
;$
在这里很重要!这意味着只有文本/
路径匹配,根据禁止指令,任何其他路径(如/foo/bar
)都是不允许的,该指令匹配所有路径(它没有$
)
见:
$
指定URL的结尾
Mechanize正确解释了robots.txt
文件。您的更新是正确的。您可以访问http://example.com/
,但不是http://example.com/page.htm
这是从标题为“集团成员记录的优先顺序”一节的页面底部看出来的,其中说明:
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规范:DNo问题,2双眼睛比1双好。谢谢你的回答!!