2017-05-10 286 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)