python網頁亂碼
㈠ python爬蟲抓取到的數據用網頁打開時是亂碼,怎麼解決
有多種情況,一種是html壓縮了,網上查一下Gzip
第二種是你的編碼部隊,看html文件的head改一下就可以了
㈡ python,抓取的網頁為二進制亂碼,怎麼解決
看看你的請求頭Accept-Encoding是不是設置了gzip,deflate
這樣的話,返回的response是需要解壓縮的
#Content-Encoding:gzip
#Content-Encoding:deflate
if("Content-Encoding"inrespInfo):
if("gzip"==respInfo['Content-Encoding']):
respHtml=zlib.decompress(respHtml,16+zlib.MAX_WBITS);
elif("deflate"==respInfo['Content-Encoding']):
respHtml=zlib.decompress(respHtml,-zlib.MAX_WBITS);
㈢ 用python抓取的網頁保存後為什麼亂碼
從你給的代碼來是Python2。我下面給一個基於Python3的代碼,可以參考一下:
romurllib.requestimporturlopen;
fromurllib.parseimportquote;
rawtext=urlopen('http://www.ccnu.e.cn',timeout=15).read();
print(rawtext)
rawtext=rawtext.decode('gbk')
print(rawtext)
f=open('ccnu.txt','w',encoding='utf8');
f.write(rawtext)
大概的原理是,在Python3下面,抓取到的頁面默認是byte類型的(通過第4行輸出的結果就可以看出來),我們需要根據網頁的實際編碼進行處理。本例中給的網頁使用的是gb2312。所以,我要先以gbk的格式進行解碼(gbk包含了gb2312,能夠表示更多的漢語字元),解碼後實際上得到的就是unicode碼了,由於我的控制台編碼設置的是utf8,在列印時系統會自動將字元串從unicode轉為utf8,所以第6行控制台列印結果正常;第7行寫入文件時也要指定文件的編碼格式,我這里選擇的是utf8,當然用gbk也是一切正常的,因為這個編碼設置的是保存文件的編碼,而不是原來那個網頁內容的編碼了。字元串編碼和文件編碼不是一回事。打開ccnu.txt發現無亂碼。
Python2的代碼我不熟。
建議你也在代碼中添加print 看控制輸出是否正常。如果控制台輸出正常,則有可能是在保存頁面文件時,沒有正確指定內容字元串的encode格式。或者把所有gb2312換為gbk再試試。
反正Python2下面極容易出現漢字亂碼,如果能理解編碼encode和解碼decode的含義,了解Python2的字元串處理過程,就可以避免這些問題。
㈣ python爬蟲抓下來的網頁,中間的中文亂碼怎麼解決
對於python的中文編碼問題可以參考下面的帖子
http : //python .jobbole. com/85482/
對於網頁的中文亂碼,建立使用requests模塊代替urllib\urllib2
requests的content方法,對中文編碼,支持比較好,基本不會出現亂碼。
req=requests.get(url,cookies=mecookies)
print req.content
具體用法,參見下面兩個帖子,較詳細:
http :// blog.csdn . net/iloveyin/article/details/21444613
http : //blog .csdn . net/alpha5/article/details/24964009
㈤ PYTHON獲取網頁源碼亂碼,怎麼辦
text 是系統自行解碼,部分網頁會不對。
content指定解碼,你的網頁是utf-8的,對應解碼就可以了
㈥ python3爬蟲抓取網頁亂碼怎麼解決
Python寫程序原則是所有進來的字元串(讀文件,爬網頁),一進來就decode,處理完之後在要輸出的地方在encode。題主讀入(read)和輸出(print)在一行里,要在win下面想不出錯就這么寫 print response.decode('utf-8').encode('gbk')