前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >windows下chardet的安装

windows下chardet的安装

作者头像
望天
发布2018-08-02 11:47:15
5380
发布2018-08-02 11:47:15
举报
文章被收录于专栏:along的开发之旅along的开发之旅

最近在读<<可爱的Python>>,CDays-1有个习题是:自动判定你自个儿/或是朋友的Blog 是什么编码的?

代码如下:

代码语言:javascript
复制
#coding:utf-8
'''cdays-1-exercise-1.py 
    @author: U{shengyan<mailto:shengyan1985@gmail.com>}
    @version:$Id$
    @note: 使用chardet和 urllib2
    @see: chardet使用文档: http://chardet.feedparser.org/docs/, urllib2使用参考: http://docs.python.org/lib/module-urllib2.html
'''

import sys
import urllib2
import chardet

def blog_detect(blogurl):
    '''
    检测blog的编码方式
    @param blogurl: 要检测blog的url
    '''
    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\tpython cdays-1-exercise-1.py http://xxxx.com'
    else:
        blog_detect(sys.argv[1])

但是因为Python3.x有不小的改变,代码需要更改.

3.x中urllib,urllib2合成了一个urllib,打开网页变成了urllib.request.urlopen(url).

这个问题解决后,还有一个问题:chardet是外部库,怎么安装?"https://pypi.python.org/pypi/chardet2/2.0.3",下载后解压,放在Python\Lib\site-packages下,如我的是"D:\Python33\Lib\site-packages\chardet2-2.0.3",然后打开命令行,输入"pythonD:\Python33\Lib\site-packages\chardet2-2.0.3\setup.py install",但是不会成功,查看代码,可知setuptools没有安装.如何安装?"https://pypi.python.org/pypi/setuptools/1.1.6",这里windows链接有个" ez_setup.py",地址:"https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py",下载后运行,即可成功安装setuptools.然后运行"python D:\Python33\Lib\site-packages\chardet2-2.0.3\setup.py install",成功安装chardet.

然后python3.x的脚本为:

代码语言:javascript
复制
#coding:utf-8
'''python 3.x'''

import sys
import urllib.request
import chardet

def blog_detect(blogurl):
  '''检测编码方式'''
  try:
    fp=urllib.request.urlopen(blogurl)
  except Exception as e:
    print(e)
    print('download exception %s'%blogurl)
    return 0
  blog=fp.read()      #python3.x read the html as html code bytearray
  codedetect=chardet.detect(blog)['encoding']
  print('%s<-%s'%(blogurl,codedetect))
  fp.close()
  return 1

if __name__=='__main__':
  if len(sys.argv)==1:
    print('''usage:
          python DetectURLCoding.py http://xxx.com''')
  else:
    blog_detect(sys.argv[1])
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2013年10月02日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档