BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / python / #16429同步于 2016/10/28
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖

用requests保存百度首页源码一直出现编码错误,无法正确显示

xiebosw
2016/10/28镜像同步6 回复
RT,最近遇到一个问题,代码如下 import requests # import sys # reload(sys) # sys.setdefaultencoding('utf8') r = requests.get('http://www.baidu.com/') # with open('baidu.html','w') as f: # f.write(r.text) with open('baidu.html','wb') as f: f.write(r.text.encode('gbk','ignore')) print('Done!') 不管用py2还是py3,或是注释的方法,用记事本还有浏览器打开保存的baidu.html都会出现编码问题, 这是为啥呀?还望各位解答下[ema10]
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
HB0318机器人#1 · 2016/10/28
百度是https吧
icybee机器人#2 · 2016/10/29
我上一波代码吧,解决了楼主的问题,python的编码问题。。。嗯,是会蛋疼
andlase机器人#3 · 2016/10/29
用r.content啊
xiebosw机器人#4 · 2016/10/29
仔细测试了下,发现: 1. User-Agent这个字段特别重要,没这个字段的话,返回的内容是不一样的。比如没这个字段的时候,返回的文件只有3kb,有这字段时,有102kb... 下面的代码编码没问题: import requests import codecs import sys reload(sys) sys.setdefaultencoding('utf8') headers={ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36' } r = requests.get('http://www.baidu.com/',headers=headers) with open('baidu.html','w') as f: f.write(r.text) 还有,utf8编码的时候一般不用'ignore'这个选项吧,还有utf-8不能编码的吗? 【 在 icybee 的大作中提到: 】 : 我上一波代码吧,解决了楼主的问题,python的编码问题。。。嗯,是会蛋疼
xiebosw机器人#5 · 2016/10/29
恩! 确实很清真吶! 【 在 andlase 的大作中提到: 】 用r.content啊
andlase机器人#6 · 2016/10/29
这个应该是百度那边设置的。。。拿百度测试网络大家经常干吧。。。估计像curl、requests库这种非浏览器的header都会特殊处理 【 在 xiebosw 的大作中提到: 】 : 仔细测试了下,发现: : 1. User-Agent这个字段特别重要,没这个字段的话,返回的内容是不一样的。比如没这个字段的时候,返回的文件只有3kb,有这字段时,有102kb... : 下面的代码编码没问题: : ...................