2016-06-21 4 views
0

Pythonのurlibモジュールのrobotparserを使用して、Webページをダウンロードできるかどうかを判断しています。しかし、私がアクセスしている1つのサイトでは、デフォルトのユーザーエージェントを介してrobot.txtファイルにアクセスすると403エラーが返されますが、たとえば、私のユーザーエージェント文字列でのリクエストを介してダウンロードされました。 (このサイトでは、リクエストでアクセスされたときに403が表示され、デフォルトのユーザーエージェントがパッケージされています。ロボット/ファイルをrobot.txtファイルに追加するのではなく、共通/汎用ユーザーエージェント文字列をブロックしているだけです)。Pythonでrobotparserで使用されるユーザーエージェントを変更します

とにかく、rootparserモジュールのユーザーエージェントを変更することはできますか?あるいは、別々にダウンロードされたrobot.txtファイルをロードするには?

答えて

1

RobotFileParserを使用したUser-Agentとのrobots.txtを取得するオプションがありませんが、あなたはparse()メソッドに文字列の配列を自分でそれを取得し、パスすることができます

from urllib.robotparser import RobotFileParser 
import urllib.request 

rp = RobotFileParser() 


with urllib.request.urlopen(urllib.request.Request('http://stackoverflow.com/robots.txt', 
                headers={'User-Agent': 'Python'})) as response: 
    rp.parse(response.read().decode("utf-8").splitlines()) 

print(rp.can_fetch("*", "http://stackoverflow.com/posts/")) 
関連する問題