编码问题
response = requests.get(URL, params=params,
headers=headers, timeout=10)
print 'self.encoding',response.encoding
output:
self.encoding ISO-8859-1
查了一些相关的资料,看了下requests的源码,只有在服务器响应的头部包含有Content-Type,且里面有charset信息,requests能够正确识别,否则就会使用默认的 ISO-8859-1编码。github中也有讨论这个问题,但requests的作者们说是根据rfc来的.
在上述代码中,response.text 是requests库返回响应的Unicode编码内容
这样,当我们去获取一些中文网页的响应内容时,且其响应头部没有charset信息,则response.text的编码就会有问题(requests的json()方法也受这个编码影响)
比如,我爬取百度的网页的时候,其中文是utf-8编码的
如下python2.7代码
In [14]: a = '约' #utf-8编码

本文探讨了Python requests库在处理编码问题上的机制,特别是当服务器响应头部缺少charset信息时,如何正确识别编码。文章提到了三种解决方法,并指出在Python 2和3中编码的不同。此外,还分析了requests库在使用socks5代理时遇到的DNS解析问题,可能导致无法正常连接目标网站。参考了相关文献和GitHub上的issue。
最低0.47元/天 解锁文章
2159

被折叠的 条评论
为什么被折叠?



