盤點一個Python網(wǎng)絡(luò)爬蟲過程中中文亂碼的問題

大家好,我是皮皮。

一、前言

前幾天在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í)交流。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容