2011-04-11 52 views
11

我想保存使用python的模塊urllib2從web服務器生成的動態pdf文件。 我用下面的代碼從服務器獲取數據,並且該數據寫入文件以PDF格式存儲在本地磁盤:使用urllib2從URL寫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文件沒有得到很好的認可由土坯讀者。如果我使用firefox手動執行請求,我沒有任何問題可以接收該文件,而且我可以將其視覺化爲其他問題。 比較接收到的http頭(firefox和urrlib)唯一的區別是一個叫做「Transfer-Encoding = chunked」的http頭域。這個字段是在firefox中收到的,但是當我執行urllib請求時它似乎沒有收到。 有什麼建議嗎?

回答

17

嘗試改變,

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

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

額外的 'B' 表示二進制方式來寫。目前,您正在以ASCII /文本模式編寫二進制文件。

+0

直接和簡單的答覆,非常感謝。 – martinbedouret 2011-04-11 20:35:56

+0

謝謝賈斯汀,我剛剛檢查,它現在工作正常,非常感謝。 – martinbedouret 2011-04-11 20:37:04

+1

太棒了!繼續點擊答案左側的複選標記,以便其他人知道這是回答。 – 2011-04-11 20:38:10