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在服务器返回二进制数据或伪造编码头时使用,以尝试在元标记内找到正确的编码.