在解析请求响应时,我应该使用.text还是.content?

Dav*_*542 7 python lxml python-requests

我偶尔会使用res.contentres.text解析来自请求的响应.在我使用的用例中,我使用的选项似乎并不重要.

.content或解析HTML的主要区别是什么.text?例如:

import requests 
from lxml import html
res = requests.get(...)
node = html.fromstring(res.content)
Run Code Online (Sandbox Code Playgroud)

在上述情况下,我应该使用res.content还是res.text?何时使用每种方法有什么好的经验法则?

Fra*_*uzo 10

文档:

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

>>> r.encoding
'utf-8'
>>> r.encoding = 'ISO-8859-1'
Run Code Online (Sandbox Code Playgroud)

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

因此r.content在服务器返回二进制数据或伪造编码头时使用,以尝试在元标记内找到正确的编码.