2017-05-10 273 views
0

我正在尋找一種方式來下載PDF文件在Python中,我看到了其他問題的建議urllib模塊的答案。我試圖使用它下載一個pdf文件,但是當我嘗試打開下載的文件時,出現一條消息,指出該文件無法打開。如何使用Python下載pdf文件?

error message

這是我的代碼used-

import urllib 
urllib.urlretrieve("http://papers.gceguide.com/A%20Levels/Mathematics%20(9709)/9709_s11_qp_42.pdf", "9709_s11_qp_42.pdf") 

我在做什麼錯?此外,該文件會自動保存到我的python文件所在的目錄中。如何更改它保存的位置?

編輯 - 我與鏈接到一個樣品PDF再次嘗試,http://unec.edu.az/application/uploads/2014/12/pdf-sample.pdf

的代碼正在與這個環節,那麼爲什麼不將它另外一個工作?

+2

你可以用'requests'此任務:http://stackoverflow.com/questions/34503412/download-and-save-pdf-file-with-python-requests-module –

+0

@DavidZemens我贏了不稱它爲重複。 OP擔心他的解決方案無法正常工作,而不是找到另一個解決方案。 –

+1

當我去那個網址時,我首先得到一個驗證碼(通過cloudflare)來證明我不是機器人,然後才能訪問pdf。此外,cloudflare網站通常會限制基於用戶代理的訪問。如果你在文本編輯器中打開文件,你可能會發現HTML而不是PDF。 – mata

回答

0
  • 您無法下載從給定的URL中使用 requestsurllib PDF內容。
  • 因爲最初給定的網址被指向另一個網頁之後 只加載pdf。
  • 如果您懷疑將響應另存爲html而不是pdf。
  • 您需要使用無頭瀏覽器(如panthomJS)從這些網頁下載文件 。
+0

在這種情況下,無頭瀏覽器如何使用?您仍然需要完成驗證碼,這是無法在無頭瀏覽器中執行的。 – mata

0

試試這個。有用。

import requests 
url='https://pdfs.semanticscholar.org/c029/baf196f33050ceea9ecbf90f054fd5654277.pdf' 
r = requests.get(url, stream=True) 

with open('C:/Users/MICRO HARD/myfile.pdf', 'wb') as f: 
f.write(r.content)