使用urllib2从URL写入PDF文件
我正在尝试使用Python的urllib2模块,从一个网络服务器保存一个动态生成的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()
这段代码运行得很好,但写出来的PDF文件在Adobe Reader中无法正确识别。如果我用Firefox手动请求这个文件,就没有问题,可以正常查看。对比一下收到的HTTP头信息(Firefox和urllib),唯一的区别是一个叫“Transfer-Encoding = chunked”的HTTP头字段。这个字段在Firefox中能收到,但在我用urllib请求时似乎收不到。有什么建议吗?
1 个回答
17
试着把
FILE = open('report.pdf', "w")
改成
FILE = open('report.pdf', "wb")
多出来的'b'表示你要以二进制模式写文件。现在你是在用ASCII/文本模式写一个二进制文件。