lxml 和不正确的源编码
lxml and incorrect source encoding
以下网页未正确编码,但我正在构建一个无论如何都需要正确处理它的客户端(无法控制服务器)。显然服务器没有提供 UTF-8。我如何使用 lxml 和请求更正此问题以正确编码结果?
from lxml import html
from lxml import etree
import requests
url = 'https://immobilier-segre.nestenn.com/maison-de-plain-pied-de-97-m2-plein-centre-de-segre-ref-33659881'
r = requests.get(url)
tree = html.fromstring(r.content)
with open('file.html', 'wb') as file:
#write the pretty XML to a file
file.write(etree.tostring(tree, pretty_print=True))
在这个 URL 上,这给出 "Franchisé" 而不是 "Franchisé"。如果 url 指向一个正确编码的站点,我没有问题,但是对于上面的 url 我有问题,我想在客户端更正这个以保存我的 html 文件在所有情况下都使用正确的编码。
我的猜测是页面在服务器端编码不正确,希望在客户端检测并更正。
为什么要解析 r.content(二进制)而不是 r.text?在后一种情况下,您的示例在我的系统上呈现得很好,而在前一种情况下我确实看到了编码问题。 – Eli Korvigo 11 月 27 日 11:16
以下网页未正确编码,但我正在构建一个无论如何都需要正确处理它的客户端(无法控制服务器)。显然服务器没有提供 UTF-8。我如何使用 lxml 和请求更正此问题以正确编码结果?
from lxml import html
from lxml import etree
import requests
url = 'https://immobilier-segre.nestenn.com/maison-de-plain-pied-de-97-m2-plein-centre-de-segre-ref-33659881'
r = requests.get(url)
tree = html.fromstring(r.content)
with open('file.html', 'wb') as file:
#write the pretty XML to a file
file.write(etree.tostring(tree, pretty_print=True))
在这个 URL 上,这给出 "Franchisé" 而不是 "Franchisé"。如果 url 指向一个正确编码的站点,我没有问题,但是对于上面的 url 我有问题,我想在客户端更正这个以保存我的 html 文件在所有情况下都使用正确的编码。
我的猜测是页面在服务器端编码不正确,希望在客户端检测并更正。
为什么要解析 r.content(二进制)而不是 r.text?在后一种情况下,您的示例在我的系统上呈现得很好,而在前一种情况下我确实看到了编码问题。 – Eli Korvigo 11 月 27 日 11:16