玩蛇网提供最新Python编程技术信息以及Python资源下载!

Python requests库页网页抓取乱码问题

我在开始加了以下的代码

# -*- coding: utf-8 -*-

import sys
reload(sys)
sys.setdefaultencoding('utf-8')

但是用

print requests.Session().get(url, data=data).text

结果中输出了长这个样子的乱码
°æȨËùÓÐ 2013 ¶«ÄÏ´óѧÍøÂçÓëÐÅÏ¢ÖÐÐÄ

然后试着查看了一下上面文本的格式

print type(requests.Session().get(url, data=data).text)

输出的结果就是unicode,后来我又看了页面的head头中写了页面编码是gb2312,我后面又把代码改成了

print requests.Session().get(url, data=data).text.encode('gb2312')

结果就出现了下面的异常
UnicodeDecodeError: 'gb2312' codec can't decode bytes in position 227-228: illegal multibyte sequence1

把代码改成

print requests.Session().get(url, data=data).text.encode('gb2312', 'ignore')

依然是乱码

真的是没辙了,希望各位大大指点一下

首先先看下网站的charset是什么编码,比如是'utf-8'的,在open url的时候先encoding='utf-8',然后在print的时候,decode('utf-8'),或者跟楼上说的用python 3.0以上的版本对编码的问题简化了很多

resp = requests.get(url)
print(resp.text.encode(resp.encoding).decode('utf-8'))

首先,sys.setdefaultencoding is evil

其次,不会用 Requests 就去看文档,不要乱来。

最后,弄不明白怎么处理编码错误的字符串就仔细想想,或者用 Python 3.x,不要散弹枪编程

以下是 Python 3。Python 2 在那个字符串前加个 u 告诉它是 unicode 也一样。

>>> '°æȨËùÓÐ 2013 ¶«ÄÏ´óѧÍøÂçÓëÐÅÏ¢ÖÐÐÄ'.encode('latin1').decode('gbk')
'版权所有 2013 东南大学网络与信息中心'

玩蛇网文章,转载请注明出处和文章网址:https://www.iplaypy.com/wenda/wd20013.html

相关文章 Recommend

玩蛇网Python互助QQ群,欢迎加入-->: 106381465 玩蛇网Python新手群
修订日期:2017年05月24日 - 14时48分49秒 发布自玩蛇网

您现在的位置: 玩蛇网首页 > Python问题解答 > 正文内容
我要分享到:

必知PYTHON教程 Must Know PYTHON Tutorials

必知PYTHON模块 Must Know PYTHON Modules