2016-08-16 60 views
0

我一直在使用Python的robotparser一段時間,它的工作正常。今天早上我碰到一個網站跑了一個非常寬鬆的期待的robots.txt文件:爲什麼RobotParser會阻止這個結果?

User-agent: * 
Disallow: /wp-admin/ 
Allow: /wp-admin/admin-ajax.php 

然而,出於某種原因,解析器認爲所有URL將被阻止。

import robotparser 
rp = robotparser.RobotFileParser("http://newenglandreptileshop.com/robots.txt") 
rp.read() 
# Try any URL 
rp.can_fetch("*", "http://www.newenglandreptileshop.com") 

False 

我的假設是,爬行所有路徑是允許的,除非被拒絕。我使用了另一個robots.txt解析器來檢查我的假設,並同意我應該能夠訪問此服務器上的大多數URL。谷歌也將它們編入索引。

看起來像Python庫中的錯誤。這是怎麼回事?

+1

我不知道RobotParser,只是一個想法:同樣的問題,如果你使用相同的主機?您可以使用'newenglandreptileshop.com'(不帶'www'),然後使用'www.newenglandreptileshop.com'(帶'www')。 – unor

+1

好眼睛。不幸的是,這並沒有幫助。 –

回答

0

根據在https://www.w3.org/TR/html4/appendix/notes.html#h-B.4.1.1https://en.wikipedia.org/wiki/Robots_exclusion_standard找到的機器人排除標準,沒有允許記錄這樣的事情。要允許訪問,您必須添加一個空的Disallow記錄。嘗試在您控制的域上託管robots.txt,並刪除顯式允許記錄並查看RobotParser是否爲can_fetch返回True。

+1

謝謝,但這仍然不能回答爲什麼禁止之外的任何路徑將被禁止(我不關心/ wp-admin /路徑)。 –

相關問題