問(wèn)題介紹
問(wèn)題1:常用網(wǎng)站的編碼格式有哪些?
答:utf-8,GB2312,GBK等
問(wèn)題2:這些字符集有什么區(qū)別?
答:請(qǐng)見(jiàn)我的另外一篇文章
問(wèn)題3:在抓取不同編碼網(wǎng)站時(shí),有什么比較好的解決思路嗎?
答:先解析網(wǎng)站編碼格式,然后使用編碼轉(zhuǎn)換,一般轉(zhuǎn)成utf-8
工具介紹
名稱:chardet模塊
下載地址:chardet 2.3.0 : Python Package Index
功能:編碼識(shí)別
實(shí)際應(yīng)用
1.解析少量信息
import chardet
import urllib
TestCodes = urllib.urlopen('http://www.baidu.com/').read()
print chardet.detect(TestCodes)
運(yùn)行結(jié)果:
{'confidence': 0.99, 'encoding': 'GB2312'}
2.大量信息解析(只解析一部分)
import urllib
from chardet.universaldetector import UniversalDetector
usock = urllib.urlopen('http://www.baidu.com/')
#創(chuàng)建一個(gè)檢測(cè)對(duì)象
detector = UniversalDetector()
for line in usock.readlines():
#分塊進(jìn)行測(cè)試诞仓,直到達(dá)到閾值
detector.feed(line)
if detector.done: break
#關(guān)閉檢測(cè)對(duì)象
detector.close()
usock.close()
#輸出檢測(cè)結(jié)果
print detector.result
運(yùn)行結(jié)果:
{'confidence': 0.99, 'encoding': 'GB2312'}
小結(jié)
1.在處理字符編碼類型未知的時(shí)候,我們可以通過(guò)chardet模塊獲得字符編碼類型,然后對(duì)其進(jìn)行重新編碼
2.當(dāng)數(shù)據(jù)量過(guò)大時(shí)我們只需要解析一小部分,不必全部解析.