2011-08-29 25 views
1

這是我的代碼,你們也可以測試一下。我總是得到亂七八糟的字符,而不是頁面源。爲什麼我在使用urllib2打開url時弄亂了字符?

Header = {"User-Agent": "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 GTB7.1 (.NET CLR 3.5.30729)"} 

Req = urllib2.Request("http://rlslog.net", None, Header) 

Response = urllib2.urlopen(Req) 

Html = Response.read() 

print Html[:1000] 

通常Html應該是網頁的源文件,但它最終要噸亂七八糟的字符。任何人都知道爲什麼?

BTW:我對蟒蛇2.7

+0

對我來說工作正常,問題必須在別的地方。在輸出響應的方式中可能有一些簡單的錯誤? – Kapep

+0

@kapep:你確定嗎?我只是簡單地'打印Html [:100]',他們都搞砸了。你在什麼Python版本? – Shane

+0

這只是一個瘋狂的猜測,因爲打印部分不包括在內。按我的預期工作。使用2.6.4。 – Kapep

回答

1

正如布魯斯已經建議,它似乎是一個壓縮問題。服務器返回gzip壓縮內容,但urllib2不支持自動gzip壓縮。事實上,據我所知,服務器在這種情況下行爲不當。如果存在Accept-encoding: gzip標題(您自己提供,或者如果它支持它,則由客戶端自動添加)時,它應該只壓縮內容。

因此:要麼使用自動支持它的庫,如httplib2(我已使用相關頁面進行測試,並且它可以正常工作),或者自行解壓縮(請參閱this SO question有關如何操作的答案,note在問題中服務器返回的頭被檢查以查看內容是否被gzip壓縮)

+0

非常感謝,男士! – Shane

0

你與它支持的實時壓縮的用戶代理請求。你確定輸出不是gzip壓縮的嗎?嘗試運行它通過zlib module和/或打印標頭

相關問題