[Python] - 使用chardet检查网页编码格式时发现的问题
最近在使用chardet检查网页编码格式时发现如下问题:
用urllib打开网页再检查编码格式和用urllib2打开网页检查编码格式结果不一样,所以urllib2打开可能导致问题,需要关注。
查看了相关的文章,点这里(需FQ)。果然发现urllib与urllib2在很多时候是需要一起使用的。
测试过程如下:
1. 使用urllib2打开网页,检查编码格式。
结果如下,结果中出现了新浪网的字符编码格式为None的情况:
2. 使用urllib打开url,检查chardet的检查的编码结果。发现如果用urllib则不会出现检查不到编码格式的问题。
运行的结果中,所有URL的字符编码都侦测到了,结果如下:
分析原因是因为:
urllib2不再解压被gzip的页面信息,所以无法检测到被压缩后的页面编码格式了。
在用urllib2和chardet配合检查网页编码格式的时候需要先判断页面是否被压缩过,如果压缩过,先进行gzip解压的工作。
另外,根据实际使用情况得出的结论是,最好不要将urllib与urllib2混用,否则会导致很多编码乱码的隐患。