2012-03-10 56 views
0

我試圖以編程方式從MusicBrainz網站檢索編輯歷史頁面。 (musicbrainzngs是MB網絡服務的庫,無法從Web服務訪問編輯歷史記錄)。爲此,我需要使用我的用戶名和密碼登錄MB網站。如何以編程方式從MusicBrainz使用python檢索編輯歷史頁面?

我試過使用mechanize模塊,並使用登錄頁面的第二個表單(第一個是搜索表單),我提交了我的用戶名和密碼;從迴應中,似乎我成功登錄到該網站;然而,對編輯歷史頁面的進一步請求引發了一個例外:

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

我瞭解異常及其原因。我對不濫用網站承擔全部責任(畢竟,任何用法都會用我的用戶名標記),我只是想避免手動打開頁面,保存HTML並在保存的HTML上運行腳本。我能克服403錯誤嗎?

回答

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')] 

請注意,這樣做的時候,你實際上是欺騙的網站到思考你是一個有效的客戶。

+0

非常感謝您的回答和警告。這是它。 – tzot 2012-03-10 10:15:57

2

更好的解決方案是尊重robots.txt文件,只需下載編輯數據本身而不是屏幕刮擦MusicBrainz。你可以下來這裏加載完整的編輯歷史記錄:

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

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

而且,作爲MusicBrainz團隊的領導者,我想請您尊重robots.txt並下載編輯數據。這就是我們編輯數據可下載的原因之一。

謝謝!

+0

在一個**月**期間,負載大約爲** 90 **請求(僅限某些錄製編輯的第一頁),檢查某些PUID關聯或解除關聯可能被誤解的指針;最近足夠的數據幾乎是我的目的。我只想在任何情況下手動進行自動化操作。但是如果你更喜歡每次下載最新數據時下載1.5GB的數據,我會按照你的建議去做。感謝指針。 – tzot 2012-03-10 23:51:00