使用urllib2从URL写入PDF文件

mar*_*ret 11 python urllib2

我正在尝试使用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()
Run Code Online (Sandbox Code Playgroud)

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

Jus*_*eel 17

尝试改变,

FILE = open('report.pdf', "w")
Run Code Online (Sandbox Code Playgroud)

FILE = open('report.pdf', "wb")
Run Code Online (Sandbox Code Playgroud)

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