Python requests库页网页抓取乱码问题,pythonrequests,我在开始加了以下的代码#
Python requests库页网页抓取乱码问题,pythonrequests,我在开始加了以下的代码#
我在开始加了以下的代码
# -*- coding: utf-8 -*-import sysreload(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 东南大学网络与信息中心'
编橙之家文章,
相关内容
- 怎么样可以有效避免MongoDB注入时产生的一系列问题,
- python 3.3.2没有urllib2库吗?,3.3.2urllib2,python代码:imp
- Python问答机器人程序有开源的吗推荐一个吧,python机器
- 求Python Flask将数据库内二进制图片返回给浏览器查看方
- Python要调用用户输的函数有什么简便方式吗,python调用
- Python list列表如何转换成字符串?,pythonlist,有一个多维
- python中删除目录名两端,python删除目录名,有一个字符串
- python如何实现文件占用情况并做删除处理的方法,,为了
- python用urlopen返回 HTTP Error 400,用curl正常,urlopencurl,url
- python运行爬虫程序时间如何控制?,python运行爬虫程序
评论关闭