返回信息流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]
这是一条镜像帖。来源:北邮人论坛 / python / #16429同步于 2016/10/28
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖
用requests保存百度首页源码一直出现编码错误,无法正确显示
xiebosw
2016/10/28镜像同步6 回复
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
仔细测试了下,发现:
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的编码问题。。。嗯,是会蛋疼
这个应该是百度那边设置的。。。拿百度测试网络大家经常干吧。。。估计像curl、requests库这种非浏览器的header都会特殊处理
【 在 xiebosw 的大作中提到: 】
: 仔细测试了下,发现:
: 1. User-Agent这个字段特别重要,没这个字段的话,返回的内容是不一样的。比如没这个字段的时候,返回的文件只有3kb,有这字段时,有102kb...
: 下面的代码编码没问题:
: ...................