我使用的Python的urllib的urlretrieve()函数,以试图抓住一些PDF文件从网站。 它有(至少对我来说)停止工作,并下载损坏的数据(15 KB,而不是164 KB)。
我曾与几个PDF格式的测试,这一切没有成功(即random.pdf )。 我似乎无法得到它的工作,我需要能够下载PDF格式的对我工作的项目。
这是什么样的,我使用它来下载PDF格式的(和使用分析文本代码示例pdftotext.exe ):
def get_html(url): # gets html of page from Internet
import os
import urllib2
import urllib
from subprocess import call
f_name = url.split('/')[-2] # get file name (url must end with '/')
try:
if f_name.split('.')[-1] == 'pdf': # file type
urllib.urlretrieve(url, os.getcwd() + '\\' + f_name)
call([os.getcwd() + '\\pdftotext.exe', os.getcwd() + '\\' + f_name]) # use xpdf to output .txt file
return open(os.getcwd() + '\\' + f_name.split('.')[0] + '.txt').read()
else:
return urllib2.urlopen(url).read()
except:
print 'bad link: ' + url
return ""
我是新手程序员,所以任何输入将是巨大的! 谢谢
我建议尝试请求 。 这是一个非常好的库,隐藏了所有一个简单的API的实现。
>>> import requests
>>> req = requests.get("http://www.mathworks.com/moler/random.pdf")
>>> len(req.content)
167633
>>> req.headers
{'content-length': '167633', 'accept-ranges': 'bytes', 'server': 'Apache/2.2.3 (Red Hat) mod_jk/1.2.31 PHP/5.3.13 Phusion_Passenger/3.0.9 mod_perl/2.0.4 Perl/v5.8.8', 'last-modified': 'Fri, 15 Feb 2008 17:11:12 GMT', 'connection': 'keep-alive', 'etag': '"30863b-28ed1-446357e3d4c00"', 'date': 'Sun, 03 Feb 2013 05:53:21 GMT', 'content-type': 'application/pdf'}
顺便说一句,你只得到一个15KB下载的原因是因为您的网址是错误的。 它应该是
http://www.mathworks.com/moler/random.pdf
但你歌厅
http://www.mathworks.com/moler/random.pdf/
>>> import requests
>>> c = requests.get("http://www.mathworks.com/moler/random.pdf/")
>>> len(c.content)
14390
将文件写入到光盘:
myfile = open("out.pdf", "w")
myfile.write(req.content)
也许它的有点晚了,但你可以尝试这样的:刚写入的内容到一个新的文件,它使用textract,因为这样做没有它给了我包含“#$”不需要的文本阅读。
import requests
import textract
url = "The url which downloads the file"
response = requests.get(url)
with open('./document.pdf', 'wb') as fw:
fw.write(response.content)
text = textract.process("./document.pdf")
print('Result: ', text)