欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解決Python的requests中text中文亂碼的問(wèn)題

 更新時(shí)間:2025年01月09日 09:53:52   作者:Dontes_cn  
學(xué)習(xí)Python爬蟲(chóng)時(shí)遇到中文亂碼問(wèn)題,發(fā)現(xiàn)req.text返回的是unicode,無(wú)法再次decode,通過(guò)查看網(wǎng)站源碼,發(fā)現(xiàn)網(wǎng)站使用的是gbk編碼,Requests會(huì)自動(dòng)解碼來(lái)自服務(wù)器的內(nèi)容,但有時(shí)推測(cè)錯(cuò)誤,通過(guò)設(shè)置r.encoding為gbk,然后對(duì)text進(jìn)行編碼,可以正確打印出中文

Python的requests中text中文亂碼

今天學(xué)習(xí)python爬蟲(chóng)是遇到了字符編碼的問(wèn)題

target = 'http://www.biqukan.com/1_1094/5403177.html'
req = requests.get(url=target)
print req.text

打印出來(lái)的中文都是亂碼,現(xiàn)在說(shuō)一下解決方案。

解決方案

首先要明確的是,req.text返回的是unicode,也就是說(shuō)無(wú)法再decode,所以網(wǎng)上那些先decode再encode的方法是沒(méi)法使用的,這種方法適用的是req.content。

通過(guò)查看網(wǎng)站源碼,發(fā)現(xiàn)網(wǎng)站使用的charset是gbk,Requests 會(huì)自動(dòng)解碼來(lái)自服務(wù)器的內(nèi)容。

大多數(shù) unicode 字符集都能被無(wú)縫地解碼。

請(qǐng)求發(fā)出后,Requests 會(huì)基于 HTTP 頭部對(duì)響應(yīng)的編碼作出有根據(jù)的推測(cè)。

當(dāng)你訪問(wèn) r.text 之時(shí),Requests 會(huì)使用其推測(cè)的文本編碼。

你可以找出 Requests 使用了什么編碼,并且能夠使用 r.encoding 屬性來(lái)改變它,我認(rèn)為requests對(duì)編碼做出了錯(cuò)誤的判斷,所以進(jìn)行了下面的設(shè)置:

req.encoding='gbk'

注意,這里的gbk是因?yàn)榫W(wǎng)頁(yè)使用的是gbk。

然后再對(duì)text進(jìn)行編碼

text = req.text
print text.encode('utf-8')

就能正確的打印出中文了

完整的代碼

如下:

# coding: UTF-8
import requests

if __name__ == '__main__':
    target = 'http://www.biqukan.com/1_1094/5403177.html'
    req = requests.get(url=target)
    req.encoding='gbk'
    # content = req.content.decode('gbk').encode('utf-8')
    # print content
    text = req.text
    print(isinstance(text, unicode))
    print text.encode('utf-8')

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論