Python爬蟲解決亂碼問題

2021-09-24 03:43:13 字數 1174 閱讀 4876

問題原因:

爬取的所有網頁無論何種編碼格式,都轉化為utf-8格式進行儲存,與源**編碼格式不同所以出現亂碼。

目前大部分都是utf-8格式,一部分是gbk格式或者(會出現亂碼),還有一些不常見的,比如windows-1254,utf-8-sig等這裡不做討論。國內網頁還沒有看到別的編碼格式,歡迎補充指正!

簡單科普一下:

utf-8通用性比較好,是用以解決國際上字元的一種多位元組編碼,它對英文使用8位(即乙個位元組),中文使用24位(三個位元組)來編碼。

utf-8編碼的文字可以在各國各種支援utf8字符集的瀏覽器上顯示,也就是必須兩者都是utf-8才行。

gbk是是國家編碼,通用性比utf8差,gb2312之類的都算是gbk編碼。

gbk包含全部中文字元;utf-8則包含全世界所有國家需要用到的字元。

unicode是一種二進位制編碼,所有utf-8和gbk編碼都得通過unicode編碼進行轉譯,即utf-8和gbk編碼之間不能直接轉換。附圖如下:

解決辦法:

page =requests.get(url)

encoder = 'utf-8'

try:

html = urllib.request.urlopen(url).read()

encoder = chardet.detect(html)['encoding']

except exception as e:

print(e)

if encoder == 'utf-8' or encoder == 'utf-8':

pass

elif encoder == 'gbk' or encoder == 'gbk':

page.encoding = 'gbk'

elif encoder == 'gb2312' or encoder == 'gb2312':

page.encoding = 'gb2312'

else:

print('請手動檢視', page.encoding)

參考文章

解決python爬蟲中文亂碼問題

首先網頁時可能採用不同編碼的,類似這個我爬取的網頁 當我直接使用.text函式列印時會出現如下亂碼 嘗試編碼結果 print strhtml.text.encode utf8 但發現明顯中文被變成了位元組 可以明顯的發現此處用於解碼的encoding是繼承自父類strhtml的,而沒有設定過的話父類...

如何解決python爬蟲亂碼問題

直接上 import requests url html requests.get url text print html 輸出結果亂碼,可這是為什麼呢?很明顯是編碼問題造成的 import requests import sys 輸出我們編譯器所用的編碼 print sys.getdefaulte...

python爬蟲亂碼問題

使用爬蟲爬取網頁文字 所有中文文字全是亂碼,如圖 源網頁編碼和爬取下來後的編碼格式不一致。如源網頁為gbk編碼的位元組流,而我們抓取下後程式直接使用utf 8進行編碼並輸出到儲存檔案中,這必然會引起亂碼 即當源網頁編碼和抓取下來後程式直接使用處理編碼一致時,則不會出現亂碼 此時再進行統一的字元編碼也...