【问题标题】:Write PDF file from URL using urllib2使用 urllib2 从 URL 写入 PDF 文件
【发布时间】:2011-04-11 20:21:47
【问题描述】:

我正在尝试使用 python 的模块 urllib2 保存从 Web 服务器生成的动态 pdf 文件。 我使用以下代码从服务器获取数据并将该数据写入文件以便将 pdf 存储在本地磁盘中。:

import urllib2
import cookielib

theurl = 'https://myweb.com/?pdf&var1=1'
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
opener.addheaders.append(('Cookie', cookie))
request = urllib2.Request(theurl)

print("... Sending HTTP GET to %s" % theurl)
f = opener.open(request)
data = f.read()
f.close()
opener.close()

FILE = open('report.pdf', "w")
FILE.write(data)
FILE.close()

此代码运行良好,但 adobe reader 无法很好地识别编写的 pdf 文件。如果我使用 firefox 手动执行请求,我可以毫无问题地接收文件,并且可以毫无问题地将其可视化。 比较接收到的 http 标头(firefox 和 urrlib),唯一的区别是一个名为“Transfer-Encoding = chunked”的 http 标头字段。该字段在 Firefox 中收到,但在我执行 urllib 请求时似乎没有收到。 有什么建议吗?

【问题讨论】:

    标签: python urllib2


    【解决方案1】:

    尝试改变,

    FILE = open('report.pdf', "w")
    

    FILE = open('report.pdf', "wb")
    

    额外的“b”表示以二进制模式写入。目前您正在以 ASCII/文本模式编写二进制文件。

    【讨论】:

    • 谢谢贾斯汀,我刚刚检查过,现在工作正常,非常感谢。
    • 太棒了!继续并单击答案左侧的复选标记,以便其他人知道这是已回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-10
    • 1970-01-01
    • 1970-01-01
    • 2018-07-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多