requests請求返回內容 中文亂碼問題

做一個安靜的小爬蟲發表於2019-05-13

1.為什麼有時候request會出現請求的內容中文亂碼

以國家統計局的[http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2016/]為例,開發者模式開啟可以看到 Conten-Type沒有指定預設的編碼。 而requests使用get請求時候,response預設使用iso-8859-1編碼對訊息體進行編碼,傳送資料給客戶端。
(大部分網頁是有指定編碼的)。
在這裡插入圖片描述

2. 解決方法

1.自行設定

檢視該網頁的網頁原始碼,還以上面國家統計局的連線為例,搜尋charset的編碼。然後在程式碼中指定它的編碼格式,重新列印相應內容的text,這次中文就不會亂碼問題了。
在這裡插入圖片描述

res = requests.get(url, headers = header)
res.encoding = ‘gb2312’
pritn(res.text)

2.利用apparent_encoding

res = requests.get(url, headers = header)
res.encoding = res.apparent_encoding
pritn(res.text)

3. 已經爬好的帶有\u5430的字串怎麼轉為正常的中文顯示字串

python3: 字串.encode(‘utf-8’).decode(‘unicode_escape’)

相關文章