我正试图在python中使用漂亮的汤和机械化库来抓取几个网站。但是,我遇到了一个包含以下robots.txt的网站
User-Agent: *
Allow: /$
Disallow: /
根据维基百科,Allow指令抵消了以下Disallow指令。我已经阅读了更简单的例子,并了解它是如何工作的,但这种情况对我来说有点混乱。 我是否可以假设我的抓取工具可以访问此网站上的所有内容? 如果是的话,网站甚至会首先编写robots.txt似乎很奇怪......
额外信息:
当我试图抓住这个网站时,Mechanize给了我一个错误,错误就像Http error 403, crawling is prohibited because of robots.txt
一样。如果我上面提到的假设是正确的,那么我认为机械化在尝试访问网站时返回错误的原因是因为它没有配备来处理这样的robots.txt,或者它遵循不同的解释robots.txt文件的标准。 (在这种情况下,我只需要让我的抓取工具忽略robots.txt)
更新
我偶然发现了这个问题
特别是,我查看了@ eywu的答案,现在我认为我最初的假设是错误的,我只允许访问website.com但不允许访问website.com/other-stuff答案 0 :(得分:3)
您的更新是正确的。您可以访问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
答案 1 :(得分:0)
不,您的抓取工具只能访问主页。
Allow
指令可让您访问/$
; $
在这里意义重大!这意味着只有文字/
路径匹配,根据/foo/bar
指令不允许任何其他路径(如Disallow
),该指令匹配所有路径(它没有$
)。
请参阅Google documentation on path matching:
- 醇>
$
指定网址的结尾
机械化正确解释了robots.txt
文件。