2012-03-10 9 views
0

私はプログラム的にMusicBrainzのウェブサイトからの編集履歴ページを取得しようとしています。 (musicbrainzngsはMB Webサービスのライブラリであり、編集履歴にはWebサービスからアクセスできません)。このために、私はユーザ名とパスワードを使用してMBウェブサイトにログインする必要があります。Pythonを使ってMusicBrainzから編集履歴ページをプログラムで取得する方法は?

mechanizeモジュールを使用してみましたが、ログインページの2番目のフォーム(最初は検索フォーム)を使用して、ユーザー名とパスワードを送信します。応答から、私は正常にサイトにログインしているようです。ただし、編集履歴ページへの追加の要求により、例外が発生します。

mechanize._response.httperror_seek_wrapper: HTTP Error 403: request disallowed by robots.txt 

私は例外とその理由を理解しています。私はサイトを乱用しないように全責任を負います(結局のところ、ユーザー名にタグがついています)。手動でページを開いたり、HTMLを保存したり、保存されたHTMLにスクリプトを実行したりしないでください。 403エラーを克服することはできますか?

答えて

1

サイトのrobots.txtを迂回したい場合は、mechanize.Browserrobots.txtファイルを無視するように伝えてください。あなたはロボットのように見えるいけないので

br = mechanize.Browser() 
br.set_handle_robots(False) 

また、あなたのブラウザのユーザーエージェントを変更する場合があります

br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')] 

これを実行するとき、あなたが実際に思考にウェブサイトをだましていることに注意してください。あなたは有効なクライアントです。

+0

ご回答いただきありがとうございます。これはそれです。 – tzot

2

より良い解決策は、robots.txtファイルを尊重し、単に編集データ自体をダウンロードし、MusicBrainzをスクレイプしないことです。あなたはダウンし、ここで、完全な編集履歴をロードすることができます。ファイルmbdump-edit.tar.bz2ため

ftp://ftp.musicbrainz.org/pub/musicbrainz/data/fullexport

ルック。

また、MusicBrainzチームのリーダーとして、robots.txtを尊重して編集データをダウンロードするよう依頼したいと思います。編集データをダウンロードできる理由の1つです。

ありがとうございます!

+0

負荷は、いくつかのPUIDの会合または解離が誤解されるかもしれないポインタをチェックし、**月の(いくつかの記録編集の最初のページのみ)** 90の**リクエストについてになります。最近の十分なデータは私の目的のためのほとんどの要件です。どのような場合でも手動で行うことを自動化したいだけです。しかし、最新のデータが入手可能になるたびに、1.5 GiBのデータをダウンロードするほうが好きな場合は、お勧めの通りにします。ポインタをありがとう。 – tzot

関連する問題