1. 程式人生 > >爬蟲爬取資料時各種中文亂碼問題

爬蟲爬取資料時各種中文亂碼問題

學爬蟲有一段時間了,期間總是覺得內容編碼會傻傻分不清楚,尤其是直接網頁拿資料的時候,遇見中文有時候特別麻煩,看大神介紹的東西太多,只記下了處理方式,僅供參考,不對地方歡迎大家指正~~

一般請求返回內容編碼方式步驟如下:

1、檢視資料來源網頁的編碼形式--爬取資料所在網頁原始碼就有寫:

2、編碼解析:

respond.decode(請求返回的編碼格式).encode(Python預設的utf-8)

筆記中其他大神這樣教,實踐中大多情況我都用:respond.encode(Python預設的utf-8).decode(請求返回的編碼格式)

爬取網頁內容正常編譯,無報錯,英文均顯示正常,中文亂碼

最近爬取免費取名網站時候,遇見爬下來的編碼正確編碼後無報錯,英文均顯示正常,但是中文奇奇怪怪亂碼情況如下圖,網頁編碼兩種情況遇見解析後如此,處理方法如下,

第一種:網頁編碼為gb2312 (requests的get方式獲取資料)

原來處理方式(出現上圖亂碼),響應內容=respond.text.encode('utf-8').decode('gb2312')×

改進處理方式:    ① respond.content.decode('gb18030','ignore')  ---親試遇見中文響應內容解析還是用這種方式好

                            ② respond.content.decode('gbk','ignore') 

                             #使用gbk2312出現報錯'gbk' codec can't encode character '\u30fb' in position 12530: illegal multibyte sequence~  這是一個很尷尬的問題,第二種第一次處理也報錯,後面又可以了~~~

總結:遇見中文編碼decode裡面,'gbk'/'gbk2312'/'gb18030'  (備用繁體編碼選項沒用過,可以留用'big5'/'big5hkscs')總有一款適合你 實在不行看下面↓↓↓


第二種:網頁編碼為utf-8 (requests的get方式獲取資料)

嘗試了上面n中組合形式,就是頑固的不行,終於借鑑了一些大神的方法解決掉了,decode('utf-8')確定無疑。

解決亂碼:在程式碼之前新增預設設定編碼格式

sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='gb18030')
url = 'https://www.yw11.com/html/qiming/xuename/2009/0929/273.html'
urlcontent = requests.get(url).content.decode('utf-8')
轉自:https://blog.csdn.net/u010924297/article/details/80353440