windows下chardet的安装

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

代码如下:

#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的脚本为:

#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])

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏生信宝典

Linux学习-文件列太多,很难识别想要的信息在哪列;别焦急,看这里。

经常会碰到列数特别多的文件,而屏幕又不足以放下这么多列;即便能放下,也不容易清晰的辨别出想提取的信息在第几列。 根据我们前面的学习,可以用一行命令或简单的写一...

28710
来自专栏SDNLAB

码农学ODL之OpenDaylight与OpenStack的集成

OpenDaylight和OpenStack的集成一直是热门话题,OpenDaylight官网也提供了相应的文档(https://wiki.opendaylig...

3595
来自专栏哲学驱动设计

Rafy 领域实体框架 - 树型实体功能(自关联表)

在 Rafy 领域实体框架中,对自关联的实体结构做了特殊的处理,下面对这一功能进行讲解。 场景 在开发数据库应用程序时,往往会遇到自关联表的场景。例如,分类信息...

2088
来自专栏FreeBuf

IIS4\\IIS5 CGI环境块伪造0day漏洞

大约14年前发现一直到现在的0day 是IIS4\IIS5的漏洞,对应操作系统是winnt和win2000系统,微软不再支持这些软件,他们的策略想淘汰这些系统,...

20210
来自专栏技术碎碎念

OS存储器管理(一)

存储器的层次: 分为寄存器、主存(内存)和 辅存(外存)三个层次。 主存:高速缓冲存储器、主存储器、磁盘缓冲存储器,          主存又称为可执行存储...

3939
来自专栏漫漫全栈路

Python开发环境—— jupyter Notebook 安装使用

这篇说一下 Linux 下配置一个 Python 的 jupyter Notebook并可以外网访问进行开发的方法,这样就可以随时轻松的使用 jupyter N...

58211
来自专栏日常分享

RabbitMQ基本模式

   最近用到了一些RabbitMQ的东西,看了官方的Get Started,以此为模板总结一下。

3132
来自专栏coder修行路

关于python中pika模块的问题

工作中经常用到rabbitmq,而用的语言主要是python,所以也就经常会用到python中的pika模块,但是这个模块的使用,也给我带了很多问题,这里整理一...

2572
来自专栏安恒信息

IIS4\\IIS5 CGI环境块伪造0day漏洞

大约14年前发现一直到现在的0day 是IIS4\IIS5的漏洞,对应操作系统是winnt和win2000系统,微软不再支持这些软件,他们的策略想淘汰这些系统,...

2977
来自专栏张善友的专栏

.net 2.0 你是如何使用事务处理?

     事务处理作为企业级开发必备的基础设施, .net 2.0通过System.Transactions对事务提供强大的支持.你还是在使用.net 1.x下...

2216

扫码关注云+社区

领取腾讯云代金券