Python:urlretrieve PDF 下载

标签 python pdf urllib2 urllib

我在 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 ""

我是一名新手程序员,所以任何输入都会很棒!谢谢

最佳答案

我建议尝试 requests .这是一个非常好的库,将所有实现隐藏在一个简单的 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

关于Python:urlretrieve PDF 下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14669827/

相关文章:

python - 有效地检查两个数是否互质(相对质数)?

javascript - 使用 EXTJS、JAVASCRIPT 在新选项卡(FireFox 和 IE 8)中打开 pdf

python - 504 : Gateway Timeout with urllib2

python - 如何在python中使用urllib2捕获重定向的url

android - 如何使用 PdfRenderer 在 Android 上渲染 PDF

Python 跟随 Window.Location 重定向

python - 有没有简单的方法可以使用 QPainterPath 或在 PyQt 中使用类似的东西来绘制复杂的东西

python - 确定稀疏矩阵(Lil 矩阵)的稀疏性

java - 限制特定模式的正则表达式字符串长度

c# - ITextSharp HTML 到 PDF 转换 CSS 图像在转换后不显示