如何使用python以编程方式从MusicBrainz检索编辑历史页面?

时间:2012-03-10 09:40:44

标签: python web musicbrainz

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

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

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

我理解异常及其原因。我完全负责不滥用网站(毕竟,任何用法都会用我的用户名标记),我只想避免手动打开页面,保存HTML并在保存的HTML上运行脚本。我可以克服403错误吗?

2 个答案:

答案 0 :(得分:2)

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

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

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

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

谢谢!

答案 1 :(得分:1)

如果您想绕过网站的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')]

请注意,在执行此操作时,您实际上是在欺骗网站认为您是有效的客户。