Python网站爬虫编写中字符编码的解决方案分享

问题介绍

问题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.当数据量过大时我们只需要解析一小部分,不必全部解析.

推荐阅读更多精彩内容