python抓取网页内容时出错,UnicodeEncodeError: 'gbk' codec can't encode character '\ue4bf.....

UnicodeEncodeError: 'gbk' codec can't encode character '\ue4bf' in position 1235: illegal multibyte sequence RT怎么破?

问题是这样的,网页的数据应该是'utf-8'编码,这个可以在网页的head上面看得到,然后你爬网页的时候会把它转化成Unicode,出问题的是在print()这儿,对于print()这个函数,他需要把内容转化为'gbk'编码才能显示出来. 然后解决办法是这样,你在转化后的Unicode编码的string后面,加上 .encode('GBK','ignore').decode('GBk') 也就是先用gbk编码,忽略掉非法字符,然后再译码,是不是很有道理 应该是这样的,因为我和你遇到同样的问题,现在解决了
温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-04-05

    在Python自带的交互式模式下编辑,交互式下,一行只能放一段代码import requests , 这一行要和下面你定义的函数隔开为两段代码

    也就是import requests  要按回车键,然后在新的【>>>】开始处再输入你定义的函数代码

    一些网页可以用Python的urllib来抓取内容,基本上没有问题

    但是有的网页内容在浏览器看到的和抓取的有很大区别,抓取的基本上是框架实质内容没有

    比如必应词典http://dict.bing.com.cn/#good


本回答被网友采纳
第2个回答  2017-11-02
方法正如楼下所说,这个问题是可以解决的:
# -*- coding: utf8 -*-

a='\xa0ji!r-\n--a\u30fbn1he海流llo@23\xb6既,然'
x=a.encode('gbk','ignore')
print(x)
print(x.decode('gbk'))
res:
ji!r-
--an1he海流llo@23既,然
此时成功在终端输出。至于原理,xhkczxzz解释的非常清楚了
第3个回答  2014-01-01
你确定该网页是GBK编码的吗?还是UTF8编码的?
试试把GBK换成UTF8看看。追问

代码如下:uhtml = html.decode('utf-8') 如果把UTF-8换成别的会报错,那应该就是UTF-8了吧?

追答

应该是了。
可以print一下,看能否正确输出就是了。

追问

输出结果就是我问题中的那个样子.........

追答

你不是说“如果把UTF-8换成别的会报错"?
到底utf8会不会错呢?
你可以用浏览器打开该页面看看编码是什么啊!

追问

看了,是utf-8

追答

你的python编程环境是什么?支持utf-8吗?还是只能gbk输出?

试试:

print html.decode('utf-8') .encode('gbk')

本回答被提问者采纳
相似回答