Python下chardet的安装

环境1:

winXP 32bit python2.7.6

说,安装chardet前要先安装setuptools,试过各种安装都不奏效,一直出现UnicodeDecodeError:'ascii'codec can't decode byte 0xd4 inposition 9: ordinal not inrange(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



你可能感兴趣的:(Python学习)