请求编码设置失败

时间:2015-09-13 10:11:51

标签: python python-requests

我有python代码

from requests import get
for x in xrange(0, 200, 50):
    url = "http://pornolab.net/forum/viewforum.php?f=1765&start={}".format(x)
    print "Get '{}'".format(url)
    r = get(url)
    print "Encoding: {}".format(r.encoding)

问题是我有编码:windows-1251,有时编码:ISO-8859-1在同一标题上。结果

首先开始

Get http://pornolab.net/forum/viewforum.php?f=1765&start=50 
Encoding: windows-1251

第二次开始

Get http://pornolab.net/forum/viewforum.php?f=1765&start=50
Encoding: ISO-8859-1

为什么会这样?如何在请求中设置编码设置?

1 个答案:

答案 0 :(得分:0)

根据Requests Documentation -

  

当您发出请求时,Requests会根据HTTP标头对响应的编码进行有根据的猜测。当您访问r.text时,将使用由Requests猜测的文本编码。您可以使用r.encoding属性找出请求使用的编码,并进行更改:

     

r.encoding

     

'utf-8'

     

r.encoding = 'ISO-8859-1'

     

如果更改编码,只要调用r.text,Requests就会使用r.encoding的新值。您可能希望在任何可以应用特殊逻辑来计算内容编码的情况下执行此操作。例如,HTTP和XML可以在其正文中指定其编码。在这种情况下,您应该使用r.content查找编码,然后设置r.encoding。这将允许您使用正确编码的r.text。