python爬虫,读取本地html时编码报错:UnicodeDecodeError: 'ascii' codec can't decode

python爬虫,读取本地html时编码报错:UnicodeDecodeError: 'ascii' codec can't decode,第1张

Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。你不需要考虑编码方式,除非文档没有指定一个编码方式,这时,Beautiful Soup就不能自动识别编码方式了。然后,你仅仅需要说明一下原始编码方式就可以了。

python3 区分了 unicode str 和 byte arrary,并且默认编码不再是 ascii

关于编码问题的终极解决方案:

在python的Lib\site-packages文件夹下新建一个sitecustomize.py

文件,输入:

import sys

sys.setdefaultencoding('gb2312')

这里要注意一点是:这里面你可以设置GBK或者utf8 或者其他类型的编码格式,不一定非要gb2312,主要看你 *** 作的环境需要什么编码格式

自然是文件编码的问题,文件读取utf-8格式,建议使用codecs模块,不用安装,直接import就行,使用fp = codecs.open(filename,'r','utf-8')读取utf-8编码文件,python自带的open是默认gbk的。此外,建议文件都使用utf-8格式,gbk实在是windows的遗留问题,utf-8本来可以一统天下,就是windows一直不改,才使得windows下文件编码一直很麻烦。

你试试下面的代码

#!/usr/bin/env python

# -*- coding:utf8 -*-

import urllib2

req = urllib2.Request("http://www.baidu.com/")

res = urllib2.urlopen(req)

html = res.read()

res.close()

html = unicode(html, "gb2312").encode("utf8")

print html


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/6094854.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-14
下一篇2023-03-14

发表评论

登录后才能评论

评论列表(0条)

    保存