2011-12-21 21 views
2

我正在編寫一個腳本來下載gzipped XML站點地圖;文件下載,但它們已損壞。由腳本輸出的gzip文件比它們應該大一些,並且解壓縮的文件比它們應該小,因爲缺少數據。任何想法我做錯了什麼?如何使用urllib2下載gzip文件,而不會破壞它們?

saveAddress = "test.xml.gz" 

import urllib2 
import httplib 
from urllib2 import Request, urlopen, URLError 
try: 
    request = urllib2.Request("http://example.com/sitemap-general.xml.gz") 
    request.add_header('Accept-encoding', 'gzip') 
    request.add_header('User-agent', 'Custom UA String') 
    opener = urllib2.build_opener() 
    try: 
     pageText = opener.open(request).read() 
     open(saveAddress, "w").write(pageText) 
     print "Crawled successfully." 
    except URLError, e: 
     pass  
except URLError, e: 
    pass 

感謝您的任何幫助,非常感謝。

+0

這可以通過使用美麗的Python庫「請求」約5線被縮短。這不是問題,我認爲sgallen可能是正確的答案 – alonisser 2011-12-21 20:25:55

+0

感謝您的信息,我會研究它。我沒有使用Python,所以我的代碼可能不太優雅。 – David 2011-12-21 22:05:18

回答

6

以二進制方式打開文件:

open(saveAddress, "wb").write(pageText) 
+0

現在完美運作。感謝您的修復。 – David 2011-12-21 22:01:46

+0

不客氣。 – sgallen 2011-12-21 22:26:23

相關問題