中文字幕第五页-中文字幕第页-中文字幕韩国-中文字幕最新-国产尤物二区三区在线观看-国产尤物福利视频一区二区

解決python寫爬蟲出現亂碼的方法

小編給大家分享一下解決python寫爬蟲出現亂碼的方法,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!

施甸網站建設公司創新互聯,施甸網站設計制作,有大型網站制作公司豐富經驗。已為施甸上千提供企業網站建設服務。企業網站搭建\成都外貿網站建設公司要多少錢,請找那個售后服務好的施甸做網站的公司定做!

關于爬蟲亂碼有很多各式各樣的問題,這里不僅是中文亂碼,編碼轉換、還包括一些如日文、韓文 、俄文、藏文之類的亂碼處理,因為解決方式是一致的,故在此統一說明。

網絡爬蟲出現亂碼的原因

源網頁編碼和爬取下來后的編碼格式不一致。
如源網頁為gbk編碼的字節流,而我們抓取下后程序直接使用utf-8進行編碼并輸出到存儲文件中,這必然會引起亂碼 即當源網頁編碼和抓取下來后程序直接使用處理編碼一致時,則不會出現亂碼; 此時再進行統一的字符編碼也就不會出現亂碼了。

注意區分

源網編碼A、程序直接使用的編碼B、統一轉換字符的編碼C。

亂碼的解決方法

確定源網頁的編碼A,編碼A往往在網頁中的三個位置

1.http header的Content-Type
獲取服務器 header 的站點可以通過它來告知瀏覽器一些頁面內容的相關信息。 Content-Type 這一條目的寫法就是 "text/html; charset=utf-8"。

2.meta charset

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

3.網頁頭中Document定義

<script type="text/javascript">
if(document.charset){
 alert(document.charset+"!!!!");
 document.charset = 'GBK';
 alert(document.charset);
}
else if(document.characterSet){
 alert(document.characterSet+"????");
 document.characterSet = 'GBK';
 alert(document.characterSet);
}

在獲取源網頁編碼時,依次判斷下這三部分數據即可,從前往后,優先級亦是如此。

以上三者中均沒有編碼信息 一般采用chardet等第三方網頁編碼智能識別工具來做

安裝: pip install chardet

官方網站: http://chardet.readthedocs.io/en/latest/usage.html

Python chardet 字符編碼判斷

使用 chardet 可以很方便的實現字符串/文件的編碼檢測 雖然HTML頁面有charset標簽,但是有些時候是不對的。那么chardet就能幫我們大忙了。
chardet實例

import urllib
rawdata = urllib.urlopen('//www.jb51.net/').read()
import chardet
chardet.detect(rawdata)
{'confidence': 0.99, 'encoding': 'GB2312'}

chardet可以直接用detect函數來檢測所給字符的編碼。函數返回值為字典,有2個元素,一個是檢測的可信度,另外一個就是檢測到的編碼。

在開發自用爬蟲過程中如何處理漢字編碼?
下面所說的都是針對python2.7,如果不加處理,采集到的都是亂碼,解決的方法是將html處理成統一的utf-8編碼 遇到windows-1252編碼,屬于chardet編碼識別訓練未完成

import chardet
a='abc'
type(a)
str
chardet.detect(a)
{'confidence': 1.0, 'encoding': 'ascii'}
a ="我"
chardet.detect(a)
{'confidence': 0.73, 'encoding': 'windows-1252'}
a.decode('windows-1252')
u'\xe6\u02c6\u2018'
chardet.detect(a.decode('windows-1252').encode('utf-8'))
type(a.decode('windows-1252'))
unicode
type(a.decode('windows-1252').encode('utf-8'))
str
chardet.detect(a.decode('windows-1252').encode('utf-8'))
{'confidence': 0.87625, 'encoding': 'utf-8'}
 a ="我是中國人"
type(a)
str
{'confidence': 0.9690625, 'encoding': 'utf-8'}
chardet.detect(a)
# -*- coding:utf-8 -*-
import chardet
import urllib2
#抓取網頁html
html = urllib2.urlopen('//www.jb51.net/').read()
print html
mychar=chardet.detect(html)
print mychar
bianma=mychar['encoding']
if bianma == 'utf-8' or bianma == 'UTF-8':
 html=html.decode('utf-8','ignore').encode('utf-8')
else:
 html =html.decode('gb2312','ignore').encode('utf-8')
print html
print chardet.detect(html)

python代碼文件的編碼

py文件默認是ASCII編碼,中文在顯示時會做一個ASCII到系統默認編碼的轉換,這時就會出錯:SyntaxError: Non-ASCII character。需要在代碼文件的第一行添加編碼指示:

# -*- coding:utf-8 -*-  
print '中文'

像上面那樣直接輸入的字符串是按照代碼文件的編碼'utf-8'來處理的

如果用unicode編碼,以下方式:

s1 = u'中文' #u表示用unicode編碼方式儲存信息

decode是任何字符串具有的方法,將字符串轉換成unicode格式,參數指示源字符串的編碼格式。
encode也是任何字符串具有的方法,將字符串轉換成參數指定的格式。

看完了這篇文章,相信你對解決python寫爬蟲出現亂碼的方法有了一定的了解,想了解更多相關知識,歡迎關注創新互聯行業資訊頻道,感謝各位的閱讀!

新聞名稱:解決python寫爬蟲出現亂碼的方法
文章網址:http://www.2m8n56k.cn/article40/jdsgeo.html

成都網站建設公司_創新互聯,為您提供App開發定制開發網站排名網站設計網站設計公司網站營銷

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:[email protected]。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

小程序開發
主站蜘蛛池模板: 欧美精品做人一级爱免费 | 国产乱码一区二区三区四川人 | 午夜一级片| 亚洲乱码一区二区三区国产精品 | 亚洲精品m在线观看 | 久久国产精品岛国搬运工 | 久久精品男人的天堂 | 国产日韩精品视频一区二区三区 | 亚洲欧美视频在线 | 欧美一级爱操视频 | 国产美女主播一级成人毛片 | 午夜国产精品不卡在线观看 | 中文国产成人精品久久无广告 | 一级片久久 | 国产精品福利午夜h视频 | 欧美成人精品一区二区 | 亚洲视频国产视频 | 中文字幕一区二区三区精彩视频 | 国产特黄特色的大片观看免费视频 | 日韩在线黄色 | a国产精品 | 在线日韩视频 | 男人的天堂高清在线观看 | a毛片在线 | 国产一区精品在线观看 | 中文字幕国产亚洲 | 亚洲品质自拍网站 | 7m视频精品凹凸在线播放 | 国产精品日韩欧美一区二区三区 | 国产精品亚洲一区二区三区在线观看 | 国产精品视频视频久久 | 成年网站在线在免费播放 | 久草视频在线资源 | 国产三级做爰在线观看视频 | 日韩美女一级毛片a | 欧美一级毛片100部 欧美一级毛片aaaaa | 欧美日本高清视频在线观看 | 永久免费91桃色福利 | 操爽视频 | 久久三级网站 | 在线视频观看免费视频18 |