1

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

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

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

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

4

2 に答える 2

2

より良い解決策は、robots.txtファイルを尊重し、MusicBrainzをスクリーンスクレイピングするのではなく、編集データ自体をダウンロードすることです。ここで完全な編集履歴をダウンロードできます。

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

ファイルmbdump-edit.tar.bz2を探します。

そして、MusicBrainzチームのリーダーとして、robots.txtを尊重し、編集データをダウンロードしていただきたいと思います。これが、編集データをダウンロード可能にする理由の1つです。

ありがとう!

于 2012-03-10T20:34:17.170 に答える
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')]

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

于 2012-03-10T10:10:33.707 に答える