python中兩種判斷和抓取網頁編碼的方法

來源:互聯網
上載者:User

在web開發的時候我們經常會遇到網頁抓取和分析,各種語言都可以完成這個功能。我喜歡用python實現,因為python提供了很多成熟的模組,可以很方便的實現網頁抓取。

但是在抓取過程中會遇到編碼的問題,那今天我們來看一下如何判斷網頁的編碼:

網上很多網頁的編碼格式都不一樣,大體上是GBK,GB2312,UTF-8等。

我們在擷取網頁的的資料後,先要對網頁的編碼進行判斷,才能把抓取的內容的編碼統一轉換為我們能夠處理的編碼,避免亂碼問題的出現。

下面介紹兩種判斷網頁編碼的方法:

方法一:使用urllib模組的getparam方法

1 import urllib

2 #autor:pythontab.com

3 fopen1 = urllib.urlopen('http://www.baidu.com').info()

4 print fopen1.getparam('charset')# baidu

執行結果為:

gbk

呵呵,其實,上面的擷取的編碼都是不正確的,我們可以自己開啟網頁查看原始碼,發現baidu的是gb2312。唉,這個方法確實有點坑爹啊。檢測不準確、檢測不到,它都佔了,所以很不靠譜,下面介紹一個靠譜的方法。

更多精彩內容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/extra/

方法二:使用chardet模組

#如果你的python沒有安裝chardet模組,你需要首先安裝一下chardet判斷編碼的模組哦 #author:pythontab.comimport chardet import urllib#先擷取網頁內容data1 = urllib.urlopen('http://www.baidu.com').read()#用chardet進行內容分析chardit1 = chardet.detect(data1)    print chardit1['encoding'] # baidu

執行結果為:

gb2312

這個結果都是正確的哦,各位可以去親自驗證一下~~

總結:第二個方法很準確,在網頁編碼分析的時候用python模組分析內容是最準確的,而流量分析meta頭資訊的方法是不太準確的。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.