Python2.7.9 编码问题

本文详细介绍了如何解决Python网络爬虫中的编码问题,包括查看默认编码、修改默认编码、处理网页内容编码错误及使用chardet模块检测文件编码等步骤。确保编码正确性对于网络爬虫的有效运行至关重要。

  最近学一学网络爬虫,遇到第一件头疼的事情就是编码问题, 看了很多教程讲得不清楚, 现在整理一下,希望以后查看方便一些

  使用   sys.getdefaultencoding()   查看Python的默认系统编码,输出是 ascii , 这个编码应该是指的源文件的编码格式, 可以另存为的方式改成utf-8, 不过为了避免每个文件都另存为,可以在...Python27\Lib\site-packages目录下新建一个文件sitecustomize.py,里面加入以下几行,将默认编码设置为utf-8 的格式

# encoding=utf-8
import sys
reload(sys)
sys.setdefaultencoding('utf8')

这个时候打开Python Shell 用  sys.getdefaultencoding()  检查编码格式会得到utf-8

  使用  content = urllib2.urlopen(url)  打开一个网页并得到网页内容,如果要将这个content字符串输出, 会报错:  [Decode error - output not utf-8] ,在Python中字符串类型可以使用 type()来查看, 分为 str 和 Unicode两种

>>> s = '中文'
>>> print type(s)
<type 'str'>
>>> t = u'中文'
>>> print type(t)
<type 'unicode'>

其中 str 类型在Linux系统下默认编码是utf-8, 那么字符串在输出之前就应该编码为utf-8, 如果为gbk编码,就应该使用  retVal = retVal.decode('gbk').encode('utf8')  转换为utf-8格式才能正常输出. 在Windows下的默认编码是gbk编码, 所以输出前必须为gbk编码.

   有时候爬取一个网页, 在meta 和 header 里面没有说明编码格式, 这时可以使用 chardet 模块来检测文件的编码格式

import chardet
f = open('save.html','r')
fencoding = chardet.detect(f.read())
print fencoding

 上面的代码输出样式为: {'confidence': 0.99, 'encoding': 'utf-8'} ,可以知道打开的文件编码格式为utf-8的.

  

 

转载于:https://www.cnblogs.com/roger9567/p/4513449.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值