环境1:
winXP 32bit python2.7.6
说,安装chardet前要先安装setuptools,试过各种安装都不奏效,一直出现UnicodeDecodeError:
'ascii'
codec can't decode byte 0xd4
in
position 9: ordinal not
in
range(128)
这样的错误提示,终于在这个网页找到答案:http://www.aax9.com/2014/01/21/95.html
最简单的方法就是进入http://www.pip-installer.org/en/latest/installing.html
下载get-pip.py,运行
python get-pip.py
如果你没有安装过setuptools,将会自动帮您下载安装。如果已经安装过setuptools,运行更新。
pip install -u setuptools
安装完setuptools后,到https://pypi.python.org/pypi/chardet
下载 chardet-2.2.1.tar.gz (md5)
键入chardet的解压路径X:\Python27\chardet-2.2.1\chardet-2.2.1,简单一句python setup.py install,很快chardet就自动安装好啦
////--------------------我是华丽的分割线-------------------/////
环境2:
win7 64bit python3.4
高版本的python已经安装好setuptools了,这个不用再麻烦了,同样键入chardet的解压路径X:\Python34\chardet-2.2.1\chardet-2.2.1
,使用运行命令setup.py就进入自动安装了(果然命令更简便)
////--------------------我是华丽的分割线-------------------/////
安装完chardet后,进行一个简单的测试,检验下chardet是不是能用了
环境1:winXP 32bit python2.7.6
代码参考:http://wiki.woodpecker.org.cn/moin/%20ObpLovelyPython/LpyAttAnswerCdays
#coding:utf-8
import sys
import urllib2
import chardet
def blog_detect(blogurl):
try:
fp = urllib2.urlopen(blogurl) #尝试打开给定url
except Exception, e: #若产生异常,则给出相关提示并返回
print e
print 'download exception %s' % blogurl
return 0
blog = fp.read() #读取内容
codedetect = chardet.detect(blog)["encoding"] #检测得到编码方式
print '%s\t<-\t%s' % (blogurl, codedetect)
fp.close() #关闭
return 1
if __name__ == "__main__":
if len(sys.argv) == 1:
print 'usage:\n\t python test.py http://www.csdn.net'
else:
blog_detect(sys.argv[1])
运行
python test.py http://www.csdn.net
就能看到csdn网页是用什么编码的啦
ps:使用urllib代替urllib2可以实现相同的功能
import urllib
fp = urllib.urlopen(blogurl) #尝试打开给定url
////--------------------我是华丽的分割线-------------------/////
环境2:win7 64bit python3.4
#test chardet2
print ("hello world")
import chardet
import urllib.request
f = urllib.request.urlopen('http://www.csdn.net')
print (chardet.detect(f.read()))
这个是很简单的测试。。。
区别就是,python3.4不能直接使用urllib,要使用urllib.request