2014-02-10 100 views
0

有什麼方法可以從命令行下載以下pdf?從JS重定向鏈接下載pdf

http://www.ofsted.gov.uk/provider/files/1295389/urn/EY298883.pdf 

一個簡單的wget http://www.ofsted.gov.uk/provider/files/1295389/urn/EY298883.pdf返回一個網頁。但是,如果你在Firefox中使用它,你會得到一個pdf。

How to get a JS redirected pdf linked from a web page相關,我試圖找到一個python解決方案。

總之
+0

@ᴋᴇʏsᴇʀ我不認爲你可以單獨使用wget。 – marshall

+0

嘗試使用此鏈接:http://www.ofsted.gov.uk/filedownloading/?id=1295389&type=1&refer=0 – Geoffroy

+0

Wget實際上確實遵循重定向。你可以嘗試'curl'來查看你沒有遵循的內容。問題是,重定向的目標仍然不是pdf - 這是一些與JS的HTML和JS重定向到PDF。 – PSkocik

回答

1

如果您不需要模擬Web瀏覽器並運行JS的通用答案(您需要這樣做以獲得通用解決方案),但只需從您獲得的html中找到下載鏈接即可自己,那麼你可以:

  1. wget頁面(wget的將遵循HTTP重定向使這會給你,做下載的JS目標HTML)
  2. 然後需要解析HTML和尋找您正在尋找的鏈接
  3. 您需要wget鏈接

我寫了一些簡單的腳本來爲你做2,3在https://github.com/pjump/wgetbyCss 爲了使用它們,你需要

  • 紅寶石
  • 的機械化寶石(gem install mechanize

那麼你可以這樣做:

./wget_by_link_text 'http://www.ofsted.gov.uk/filedownloading/?id=1295389&type=1&refer=1' "Please download the requested file here" 

,即:

./wget_by_link_text url link_text [save_as] 

要通過其文本獲取該鏈接。或者,您可以使用wget_by_css腳本,並通過其.auto_click類或其他一些css選擇器獲取鏈接。

+0

謝謝!我也有一個版本工作在http://stackoverflow.com/questions/21663673/how-to-get-a-js-redirected-pdf-linked-from-a-web-page但你的可能會更好。 – marshall

-1

你不能使用wget/curl

你可以使用curl -L限制curl遵循重定向

curl -L http://www.ofsted.gov.uk/provider/files/1295389/urn/EY298883.pdf 

但它不工作,你可以看到curl-FAQ

4.14重定向工作在瀏覽器中,但不捲曲!

curl支持HTTP重定向(請參閱第3.8項)。瀏覽器一般 支持至少兩種其他方式執行重定向,捲曲確實不是 不是:

Meta標籤。您可以編寫一個HTML標記,使瀏覽器在一段時間後重定向到另一個給定的URL。

Javascript。您可以編寫嵌入在HTML頁面 中的JavaScript程序,該程序將瀏覽器重定向到另一個給定的URL。

沒有辦法使curl遵循這些重定向。您必須手動找出該頁面要設置的內容,或者編寫一個腳本 來解析結果並獲取新的URL。

所以我覺得壞消息,你將擁有自己的腳本內做到這一點,看看你的另一個問題作爲參考:How to get a JS redirected pdf linked from a web page


考慮使用seleniumhq女王的網站似乎成爲爬蟲的堅強後盾。

+0

它並不可悲(正如你引用的文檔所說)。 – marshall

+0

正確,這就是爲什麼你需要遵循文檔...同樣適用於'wget'並在獨立腳本中執行。 – 0x90