前言:
今天簡單爬取乙個網頁的源**時,發現出現了亂碼
python**:
部分截圖:import requests
req = requests.get(
"")req_text = req.text
(req_text)
分析:出現這樣的情況是什麼原因呢?
(1)我們先來測試一下python3的預設編碼是什麼
執行結果:import sys
('目前系統的編碼為:'
,sys.getdefaultencoding())
name1=
"驚鴻一面"
name2=name1.encode(
"utf-8"
)#str通過(encode)轉為bytes
("name1的型別:"
,type
(name1)
("name2的型別"
,type
(name2)
(name2)
(2)知識點:
(3)原因總結:
python3的預設編碼是utf-8,所有的資料他都會以utf-8進行編碼(encode)。因此,python3將目標**的原始碼爬取之後進行utf-8編碼,但我們所爬取的目標**是gb2312編碼,與python3的預設編碼不同,因而造成亂碼
解決方案:
使用通用的編碼格式
(4)注:
(5)我們以幾種常見的編碼格式進行encode測試
(6)接著上面又做了decode測試,遵行編碼使用準則,但是還是亂碼!!import requests
req= requests.get(
"")req_text1=req.text.encode(
"utf-8"
)req_text2=req.text.encode(
"gb2312"
)req_text3=req.text.encode(
"gb18030"
(req_text1)
#成功編碼成bytes
(req_text2)
#unicodeencodeerror: 'gb2312' codec can't encode character '\xb3' in position 293: illegal multibyte sequence
(req_text3)
#成功編碼成bytes
解決方法:import requests
req= requests.get(
"")req_text1=req.text.encode(
"utf-8"
).decode(
"utf-8"
)req_text2=req.text.encode(
"utf-8"
).decode(
"gb2312"
)req_text3=req.text.encode(
"utf-8"
).decode(
"gb18030"
)req_text4=req.text.encode(
"gb18030"
).decode(
"utf-8"
)req_text5=req.text.encode(
"gb18030"
).decode(
"gb2312"
)req_text6=req.text.encode(
"gb18030"
).decode(
"gb18030"
(req_text1)
#成功但是亂碼
(req_text2)
#unicodedecodeerror: 'gb2312' codec can't decode byte 0xc3 in position 297: illegal multibyte sequence
(req_text3)
#成功但是亂碼
(req_text4)
#unicodedecodeerror: 'utf-8' codec can't decode byte 0x81 in position 293: invalid start byte
(req_text5)
#unicodedecodeerror: 'gb2312' codec can't decode byte 0x81 in position 293: illegal multibyte sequence
(req_text6)
#成功但是亂碼
那到底怎樣才能解決呢???請看如下**:
這裡進行encode時使用了latin1。import requests
req= requests.get(
"")req_text=req.text.encode(
"latin1"
).decode(
"gbk"
(req_text)
Python網頁爬蟲之中文亂碼
python是個好工具,但是也有其固有的一些缺點。最近在學習網頁爬蟲時就遇到了這樣一種問題,中文 爬取下來的內容往往中文顯示亂碼。看過我之前部落格的同學可能知道,之前爬取的乙個學校網頁就出現了這個問題,但是當時並沒有解決,這著實成了我乙個心病。這不,剛剛一解決就將這個方法公布與眾,大家一同分享。co...
Python網頁爬蟲之中文亂碼
python是個好工具,但是也有其固有的一些缺點。最近在學習網頁爬蟲時就遇到了這樣一種問題,中文 爬取下來的內容往往中文顯示亂碼。看過我之前部落格的同學可能知道,之前爬取的乙個學校網頁就出現了這個問題,但是當時並沒有解決,這著實成了我乙個心病。這不,剛剛一解決就將這個方法公布與眾,大家一同分享。co...
Python入門之中文亂碼
python入門編碼 python 檔案中如果未指定編碼,有中文 時候,在執行過程會出現報錯 file test.py line 2 syntaxerror non ascii character xe4 in file test.py on line 2,but no encoding decla...