我正在尝试以编程方式从 MusicBrainz 网站检索编辑历史记录页面。(musicbrainzngs 是 MB Web 服务的库,并且无法从 Web 服务访问编辑历史记录)。为此,我需要使用我的用户名和密码登录 MB 网站。

我尝试过使用 mechanize 模块,并使用登录页面第二个表单(第一个是搜索表单),我提交我的用户名和密码;从响应来看,我似乎成功登录该网站;但是,对编辑历史记录页面的进一步请求会引发异常:

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

我了解例外情况及其原因。我对不滥用该网站承担全部责任(毕竟,任何使用都会用我的用户名标记),我只是想避免手动打开页面、保存 HTML 并在保存的 HTML 上运行脚本。我可以克服 403 错误吗?

有帮助吗?

解决方案

如果您想绕过该网站 robots.txt, ,您可以通过告诉您的 mechanize.Browser 忽略 robots.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')]

请注意,这样做时,您实际上是在欺骗网站,让其认为您是有效的客户。

其他提示

更好的解决方案是尊重robots.txt文件并只需下载编辑数据本身而不下载屏幕扫描MusicBrainz。您可以在此处加载完整的编辑历史记录:

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

查找文件mbdump-edit.tar.bz2。

,作为MusicBrainz团队的领导者,我想请您尊重robots.txt并下载编辑数据。这是我们使编辑数据可下载的原因之一。

谢谢!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top