UnicodeEncodeError: 'gbk' codec can't encode character u'\xa9' in position 28714: illegal multibyte

时间:2021-02-05 11:47:48

这个错误真的是好心塞,因为同样的代码,在别人的机器上可以运行,但不知道为什么我的就报这样的错

UnicodeEncodeError: 'gbk' codec can't encode character u'\xa9' in position 28714: illegal multibyte

然而我的25行只是将获取到的源码打印

UnicodeEncodeError: 'gbk' codec can't encode character u'\xa9' in position 28714: illegal multibyte

这个错几乎折磨了我一天一夜,在网上找了各种博客,试着照着他们的改了,然并卵。后来找到了一篇特别详尽的博客,http://www.crifan.com/unicodeencodeerror_gbk_codec_can_not_encode_character_in_position_illegal_multibyte_sequence/

本以为这回应该能解决了,结果。。。更伤心了

后来猜想既然其他人的可以运行,是不是我自己设置的问题,可是,我编码方式都是默认的啊!要了个截图一看,没想到还真是,UnicodeEncodeError: 'gbk' codec can't encode character u'\xa9' in position 28714: illegal multibyte这个要改成utf-8的才对,因为html默认编码是utf-8

好了,第一个网页爬虫就如此艰难的实现了!!其实代码很简单,只是编码那边真的搞得头都大了,不说了,上代码

# -*-coding:utf-8-*-
# 注意:utf-8一定要写在第一行
<pre style="font-family: Consolas; font-size: 10.5pt; background-color: rgb(255, 255, 255);"><span style="background-color:#ffe4ff;">__author__</span> = <span style="color:#008000;"><strong>'taoZhang'</strong></span>
import requestsimport reimport sysreload(sys)sys.setdefaultencoding('utf-8')type = sys.getfilesystemencoding()'''大致思路是:用request获取源代码,然后用正则表达式,匹配出我们想要的内容'''# 使用代理 让爬虫伪装成浏览器来访问 格式类似于字典,前面是key,后面是值headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.124 Safari/537.36'}# html = requests.get('http://jp.tingroom.com/yuedu/yd300p/')html = requests.get('http://jp.tingroom.com/yuedu/yd300p/',headers = headers) #用上面的对象赋值html.encoding = 'utf-8'# gb18030TypeStr = unicodeTypeStr.encode("GB18030"); #打印源码 之前不能打印是因为Project encoding是gbk,而不是utf-8print html.text
 结果截图: 

UnicodeEncodeError: 'gbk' codec can't encode character u'\xa9' in position 28714: illegal multibyte