问题介绍
问题1:常用网站的编码格式有哪些?
答:utf-8,GB2312,GBK等
问题2:这些字符集有什么区别?
答:请见我的另外一篇文章
问题3:在抓取不同编码网站时,有什么比较好的解决思路吗?
答:先解析网站编码格式,然后使用编码转换,一般转成utf-8
工具介绍
名称:chardet模块
下载地址:chardet 2.3.0 : Python Package Index
功能:编码识别
实际应用
1.解析少量信息
import chardet
import urllib
TestCodes = urllib.urlopen('http://www.baidu.com/').read()
print chardet.detect(TestCodes)
运行结果:
{'confidence': 0.99, 'encoding': 'GB2312'}
2.大量信息解析(只解析一部分)
import urllib
from chardet.universaldetector import UniversalDetector
usock = urllib.urlopen('http://www.baidu.com/')
#创建一个检测对象
detector = UniversalDetector()
for line in usock.readlines():
#分块进行测试,直到达到阈值
detector.feed(line)
if detector.done: break
#关闭检测对象
detector.close()
usock.close()
#输出检测结果
print detector.result
运行结果:
{'confidence': 0.99, 'encoding': 'GB2312'}
小结
1.在处理字符编码类型未知的时候,我们可以通过chardet模块获得字符编码类型,然后对其进行重新编码
2.当数据量过大时我们只需要解析一小部分,不必全部解析.