❶ python爬蟲抓取到的數據用網頁打開時是亂碼,怎麼解決
寫爬蟲是經常會遇到這樣的問題,這種問題很顯然是編碼問題,解決的方法其實也不難。
你可以用下面的兩個方法來解決你的編碼問題:
第一種是,通過瀏覽器打開你寫的html之後,找到瀏覽器中的文字編碼修改,將編碼改為Unicode編碼,即可修復。
第二種方法是修改你的前端代碼:在你的代碼output_html方法中,規定網頁的文字編碼即可
❷ python 抓取的網頁鏈接,鏈接中的中文亂碼問題
應該是shell的編碼和listinfo編碼不一樣導致的,部分正常,部分亂碼有可能是因為兩種編碼部分字元恰好一樣。
試試
importsys
printi[i].encode(sys.getdefaultencoding())
❸ PYTHON獲取網頁源碼亂碼,怎麼辦
text 是系統自行解碼,部分網頁會不對。
content指定解碼,你的網頁是utf-8的,對應解碼就可以了
❹ python爬蟲抓下來的網頁,中間的中文亂碼怎麼解決
對於python的中文編碼問題可以參考下面的帖子
http://python.jobbole.com/85482/
同時,對於網頁的中文亂碼,建立使用requests模塊代替urllib\urllib2
requests的content方法,對中文編碼,支持比較好,基本不會出現亂碼。
req=requests.get(url,cookies=mecookies)
print req.content
具體用法,參見下面兩個帖子,較詳細:
http://blog.csdn.net/iloveyin/article/details/21444613
http://blog.csdn.net/alpha5/article/details/24964009
❺ python終端輸出亂碼怎麼解決
在命令行終端上工作時,經常會碰到一個頭疼的問題就是中文亂碼。下面我們就來看一下解決python在終端輸出亂碼的解決方法。
牽涉編碼的地方一共有五處:
Python代碼文件前兩行聲明的編碼
Python代碼文件實際存儲所使用的編碼
Vim的顯示編碼
Linux系統的文件編碼
SecureCRT等終端設置的顯示編碼
嚴格來講,五碼一致的時候,如果文件沒有損壞,應該是能夠正常顯示了。
Python編碼聲明:
如果python代碼文件中包含中文,就一定要在代碼文件的前兩行(注意:一定要是前兩行)做出編碼聲明,否則python代碼默認採用ASCII保存,這樣遇到中文字元就會報錯。在代碼頭部聲明編碼的方式有三種:
# coding=<encoding name>
# -*- coding: <encoding name> -*-
# vim: set fileencoding=<encoding name>
Vim中有關編碼的選項:
在 Vim 中,有四個與編碼有關的選項,它們是:fileencodings、fileencoding、encoding 和 termencoding。
Linux系統的編碼設置:
Linux的系統編碼設置可以通過設置locale來完成,直接在命令行敲locale,然後回車,即可查看當前系統的編碼設置,與保存文件相關的設置是LC_CTYPE。
如LC_CTYPE=zh_CN.gb18030,即把系統的編碼設置成為了gb18030。
更多Python知識請關注Python自學網
❻ Python+requests 爬取網站遇到中文亂碼怎麼辦
1. 遇到的中文亂碼問題
1.1 簡單的開始
使用requests來拔取網站內容十分方便,一個最簡單的代碼段只需要2-3行代碼就行。
點擊(此處)折疊或打開
url='http//www.pythonscraping.com/'
req= requests.get(url)
print(req.text)
tree= html.fromstring(req.text)
print(tree.xpath("//h1[@class='title']/text()"))
點擊(此處)折疊或打開
url='http://sports.sina.com.cn/g/premierleague/index.shtml'
print(tree.xpath("//span[@class='sec_blk_title']/text()"))
點擊(此處)折疊或打開
print(req.headers['content-type'])
print(req.encoding)
print(req.apparent_encoding)
print(requests.utils.get_encodings_from_content(page_content.text))
點擊(此處)折疊或打開
if req.encoding=='ISO-8859-1':
encodings= requests.utils.get_encodings_from_content(req.text)
if encodings:
encoding= encodings[0]
else:
encoding= req.apparent_encoding
encode_content= req.content.decode(encoding,'replace').encode('utf-8','replace')
❼ python爬蟲出現菱形問號亂碼的解決方法
在windows下使用非idle的其他ide編輯器,會碰到這個問題。對抓取到的網頁內容進行先解碼再編碼即可。
以requests為例:
r = r.content.decode('gbk').encode('utf-8')
出現編碼問題時,
1.仔細分析錯誤的類型。
看是decode(解碼)錯誤還是encode(轉碼)錯誤。
2.搞清自己處理的字元串是什麼類型的。
一般看網頁的charset,一般為gbk,gb2312或gb18030.其中包含字元的大小為gb2312 < gbk <gb18030。一般出現『gbk』 codec can』t decode,是因為
(1)要處理的字元串本身不是gbk編碼,但是你卻以gbk編碼去解碼
比如,字元串本身是utf-8的,但是你卻用gbk去解碼utf-8的字元串,所以結果不用說,則必然出錯。
(2)處理的字元的確是gbk的,但是其中夾雜的部分特殊字元,是gbk編碼中所沒有的
如果有些特殊字元是GB18030中有的,但是是gbk中沒有的。
則用gbk去解碼,去所不支持的字元,也比如會出錯。
所以,此種情況,可以嘗試用和當前編碼(gbk)所兼容的但所包含字元更多的編碼(gb18030)去解碼,或許就可以了。
3.然後換用這種的字元編碼去編碼或解碼。
詳情鏈接:https://www.crifan.com/summary_python_unicodedecode_error_possible_reasons_and_solutions/