解決Python的requests中text中文亂碼的問(wè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)文章
Python中的進(jìn)程操作模塊(multiprocess.process)
這篇文章介紹了Python中的進(jìn)程操作模塊(multiprocess.process),文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05
Python實(shí)現(xiàn)的各種常見(jiàn)分布算法示例
這篇文章主要介紹了Python實(shí)現(xiàn)的各種常見(jiàn)分布算法,結(jié)合實(shí)例形式總結(jié)分析了Python常見(jiàn)的各種分布算法相關(guān)實(shí)現(xiàn)技巧,包括二項(xiàng)分布、離散分布、泊松分布、正態(tài)分布、指數(shù)分布等算法實(shí)現(xiàn)方法,需要的朋友可以參考下2018-12-12
關(guān)于PyTorch中nn.Module類(lèi)的簡(jiǎn)介
這篇文章主要介紹了關(guān)于PyTorch中nn.Module類(lèi)的簡(jiǎn)介,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02
簡(jiǎn)單談?wù)凱ython中的幾種常見(jiàn)的數(shù)據(jù)類(lèi)型
Python 中的變量不需要聲明。每個(gè)變量在使用前都必須賦值,變量賦值以后該變量才會(huì)被創(chuàng)建。在 Python 中,變量就是變量,它沒(méi)有類(lèi)型,我們所說(shuō)的"類(lèi)型"是變量所指的內(nèi)存中對(duì)象的類(lèi)型。2017-02-02
Python數(shù)據(jù)預(yù)處理常用的5個(gè)技巧
大家好,本篇文章主要講的是Python數(shù)據(jù)預(yù)處理常用的5個(gè)技巧,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下2022-02-02
Python?range函數(shù)生成一系列連續(xù)整數(shù)的內(nèi)部機(jī)制解析
這篇文章主要為大家介紹了Python?range函數(shù)生成一系列連續(xù)整數(shù)的內(nèi)部機(jī)制解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12
python pandas實(shí)現(xiàn)獲取指定日期所屬月的月初月末
這篇文章主要為大家詳細(xì)介紹如何使用Python的Pandas庫(kù)進(jìn)行日期格式轉(zhuǎn)換,并演示了如何獲取月初、月末及跨月日期的方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下2025-12-12

