如何使用 python 以编程方式从 MusicBrainz 检索编辑历史页面?
-
10-12-2019 - |
题
我正在尝试以编程方式从 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
,作为MusicBrainz团队的领导者,我想请您尊重robots.txt并下载编辑数据。这是我们使编辑数据可下载的原因之一。
不隶属于 StackOverflow