我想使用Python在網站上自動下載一些PDF(http://bibliotecadigitalhispanica.bne.es)。我試過使用urllib/urllib2 /機械化模塊(我一直在使用其他網站:這包括像urlopen,urlretrieve等標準功能),但在這裏,鏈接的JavaScript嵌入其中href屬性進行一些處理並打開PDF,這些模塊似乎無法處理,至少從我在這裏閱讀的內容中可以看出。例如,當我做到以下幾點:使用Python執行JavaScript鏈接href中的鏈接
request = mechanize.Request('the example url below')
response = mechanize.urlopen(request)
它拿回包含HTML頁面只是 - 我似乎無法提取PDF(有一些頁面中沒有它的鏈接,要麼)。
我通過查看真實瀏覽器中的標題(使用Firefox中的LiveHTTPHeaders擴展)知道發出了很多HTTP請求並最終返回PDF(並顯示在瀏覽器中)。我希望能夠攔截並下載它。具體而言,我得到了一系列302和304響應,最終導致PDF。
以下是我正在抓取的鏈接屬性示例: href ='javascript:open_window_delivery(「http://bibliotecadigitalhispanica.bne.es:80/verylonglinktoaccess」);'
看來,如果我執行嵌入到href屬性中的JavaScript,我最終可以到達PDF文檔本身。我嘗試過使用硒,但它有點混亂 - 我不太清楚在閱讀文檔時如何使用它。有人可以提出一種方法(通過我沒有嘗試過的模塊或通過我擁有的模塊),我可以做到這一點嗎?
非常感謝您對此有任何幫助。
PS:如果你想看到什麼,我試圖複製,我試圖訪問以下網頁上面提到的PDF鏈接(與PDF圖標的):): http://bibliotecadigitalhispanica.bne.es/R/9424CFL1MDQGLGBB98QSV1HFAD2APYDME4GQKCBSLXFX154L4G-01075?func=collections-result&collection_id=1356
你能用正則表達式來提取uri嗎? – max 2012-03-16 13:25:10
我也試過這樣做,從JavaScript函數調用中提取URI,然後嘗試訪問機械和urllib2,但目前爲止沒有運氣 - 它只是讓我回到包含HTML頁面: - /從查看頭部,它看起來好像有很多請求都是使用這個URI進行的,包括一些重定向。有沒有辦法抓住所有這些迴應?也許這也可能解決這個問題。順便謝謝你的回覆。 – spanport 2012-03-17 00:14:08
更新:通過查找最接近PDF文件的URL的結構,然後從這些文件進行重定向,我最終在該特定網站上找到了解決方法。乾杯! – spanport 2012-03-17 13:41:57