兩種判斷(抓取)網頁編碼的方法【python版】


在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。唉,這個方法確實有點坑爹啊。檢測不准確、檢測不到,它都占了,所以很不靠譜,下面介紹一個靠譜的方法。


方法二:使用chardet模塊

 1 #如果你的python沒有安裝chardet模塊,你需要首先安裝一下chardet判斷編碼的模塊哦 
 2 #author:pythontab.com
 3 import chardet 
 4 import urllib
 5 #先獲取網頁內容
 6 data1 = urllib.urlopen('http://www.baidu.com').read()
 7 #用chardet進行內容分析
 8 chardit1 = chardet.detect(data1)
 9 
10 print chardit1['encoding'] # baidu

 

執行結果為:

gb2312

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

總結:第二個方法很准確,在網頁編碼分析的時候用python模塊分析內容是最准確的,而使用分析meta頭信息的方法是不太准確的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM