Python 2.7,Requests库,无法获得unicode

时间:2016-08-24 21:59:04

标签: python parsing unicode python-requests

Request库的文档说,requests.get()方法总是返回unicode。但是当我试图知道返回的是什么编码时,我看到了“windows-1251”。那是个问题。当我尝试获取requests.get(url).text时,会出现错误,因为当前url的内容有一个西里尔符号。

import requests

url = 'https://www.weblancer.net/jobs/'
r = requests.get(url)
print r.encoding
print r.text

我有类似的东西:

windows-1251
UnicodeEncodeError: 'ascii' codec can't encode characters in position 256-263: ordinal not in range(128)

这是Python 2.7的问题还是根本没有问题? 帮帮我

1 个答案:

答案 0 :(得分:3)

来自docs

  

请求将自动解码服务器中的内容。最   unicode charsets无缝解码。

     

当您提出请求时,请求会对此进行有根据的猜测   基于HTTP头的响应编码。

requests.get().encoding告诉您用于将服务器的比特流转换为响应中的Unicode文本的编码。

在你的情况下它是正确的:响应中的标题表示字符集是windows-1251

您遇到的错误就在此之后。你正在使用的python试图将Unicode编码为ascii来打印它,然后失败。

您可以说打印r.text.encode(r.encoding) ...这与Padraic在评论中的建议结果相同 - 即r.content

注意: requests.get().encoding是一个lvar:你可以把它设置成你想要的,如果猜错的话。