2011-12-21 3 views
2

gzip으로 압축 된 XML 사이트 맵을 다운로드하는 스크립트를 작성 중입니다. 파일은 다운로드되지만 손상되었습니다. 스크립트에 의해 출력 된 gzipped 파일은 데이터가 누락되었으므로 약간 커야하며 압축 해제 된 파일은 있어야하는 것보다 작습니다. 내가 뭘 잘못하고 있는거야?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

이는 아름다운 파이썬 라이브러리 "요청"을 사용하여 약 5 선으로 단축 할 수있다. 이건 문제가 아니야. 아마 sgallen이 대답에 대해 어쩌면 맞는 것 같아. – alonisser

+0

정보를 제공해 주셔서 감사합니다. 파이썬을 많이 사용하지 않았기 때문에 코드가 너무 우아하지 않을 것입니다. – David

답변

6

열기 바이너리 모드에서 파일 :

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

이제 완벽하게 작동합니다. 고마워. – David

+0

반갑습니다. – sgallen

관련 문제