我正在尝试以编程方式从MusicBrainz网站检索编辑历史记录页面。 (musicbrainzngs
是MB Web服务的库,无法从Web服务访问编辑历史记录)。为此,我需要使用我的用户名和密码登录MB网站。
我尝试使用mechanize
模块,并使用登录页面第二种形式(第一种是搜索表单),我提交了用户名和密码;从响应中,似乎我成功登录了该网站;但是,对编辑历史记录页面的进一步请求会引发异常:
mechanize._response.httperror_seek_wrapper: HTTP Error 403: request disallowed by robots.txt
我理解异常及其原因。我完全负责不滥用网站(毕竟,任何用法都会用我的用户名标记),我只想避免手动打开页面,保存HTML并在保存的HTML上运行脚本。我可以克服403错误吗?
答案 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')]
请注意,在执行此操作时,您实际上是在欺骗网站认为您是有效的客户。