大家好,我是皮皮。
一、前言
前幾天在Python白銀交流群【空翼】問了一個Python網(wǎng)絡(luò)爬蟲中文亂碼的問題,提問截圖如下:

原始代碼如下:
import requests
import parsel
url='https://news.p2peye.com/article-514723-1.html'
headers={
'Accept-Language': 'zh-CN,zh;q=0.9',
'Accept': 'application/json, text/javascript, */*; q=0.01',
'Accept-Encoding': 'gzip, deflate, br',
'Cookie': 'A4gK_987c_saltkey=NEkW4yhb; A4gK_987c_lastvisit=1661338603; TYID=enABI2MGEfsNMDZOu4hwAg==; TJID=enABI2MGEfw+MDzqY2WWAg==; Hm_lvt_556481319fcc744485a7d4122cb86ca7=1661342207; Hm_lpvt_556481319fcc744485a7d4122cb86ca7=1661342851; A4gK_987c_sendmail=1; A4gK_987c_lastact=1661343292%09ajax.php%09advertisement',
'Host': 'news.p2peye.com',
'Referer': 'https://news.p2peye.com/article-514723-1.html',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36',
'X-Requested-With': 'XMLHttpRequest'
}
res=requests.get(url=url, headers=headers)
print(res.status_code)
res.encoding = res.apparent_encoding
# print(res.text)
selector_1 = parsel.Selector(res.text)
title = selector_1.css('#plat-title').get()
print(title)
輸出的話,看上去確實有亂碼,如下圖所示:

二、實現(xiàn)過程
這里【空翼】自己后來稍微調(diào)整了下編碼,代碼如下所示:
res.encoding = 'gbk'
就可以得到預(yù)期的效果了

只是有點不太明白,為啥res.encoding=res.apparent_encoding就不好用了,之前都無往不利的。其實這個是讓它直接推測編碼,肯定沒有自己指定的準。
后來【皮皮】也給了一個代碼,如下所示:
title.encode('iso-8859-1').decode('gbk')
也是可以得到正常的結(jié)果的:

三、總結(jié)
大家好,我是皮皮。這篇文章主要盤點了一個Python網(wǎng)絡(luò)爬蟲過程中中文亂碼的問題,文中針對該問題給出了具體的解析和代碼實現(xiàn),幫助粉絲順利解決了問題。
最后感謝粉絲【空翼】提問,感謝【皮皮】、【甯同學(xué)】給出的思路和代碼解析,感謝【dcpeng】、【冫馬讠成】等人參與學(xué)習(xí)交流。