Dav*_*542 7 python lxml python-requests
我偶尔会使用res.content
或res.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
在服务器返回二进制数据或伪造编码头时使用,以尝试在元标记内找到正确的编码.