gpt4 book ai didi

python - 使用 lxml 在 python 中编码 - 复杂的解决方案

转载 作者:太空狗 更新时间:2023-10-29 18:19:43 26 4
gpt4 key购买 nike

我需要使用 lxml 下载和解析网页并构建 UTF-8 xml 输出。我认为伪代码中的模式更具说明性:

from lxml import etree

webfile = urllib2.urlopen(url)
root = etree.parse(webfile.read(), parser=etree.HTMLParser(recover=True))

txt = my_process_text(etree.tostring(root.xpath('/html/body'), encoding=utf8))


output = etree.Element("out")
output.text = txt

outputfile.write(etree.tostring(output, encoding=utf8))

所以 webfile 可以是任何编码(lxml 应该处理这个)。输出文件必须是 utf-8。我不确定在哪里使用编码/编码。这个模式可以吗? (我找不到关于 lxml 和编码的好教程,但我可以找到很多问题...)我需要强大的解决方案。

编辑:

所以为了将 utf-8 发送到 lxml,我使用

        converted = UnicodeDammit(webfile, isHTML=True)
if not converted.unicode:
print "ERR. UnicodeDammit failed to detect encoding, tried [%s]", \
', '.join(converted.triedEncodings)
continue
webfile = converted.unicode.encode('utf-8')

最佳答案

lxml 在输入编码方面可能有点不稳定。最好是发UTF8,发UTF8。

您可能想使用 chardet模块或 UnicodeDammit解码实际数据。

你会想做一些模糊的事情,比如:

import chardet
from lxml import html
content = urllib2.urlopen(url).read()
encoding = chardet.detect(content)['encoding']
if encoding != 'utf-8':
content = content.decode(encoding, 'replace').encode('utf-8')
doc = html.fromstring(content, base_url=url)

我不确定你为什么要在 lxml 和 etree 之间移动,除非你正在与另一个已经使用 etree 的库交互?

关于python - 使用 lxml 在 python 中编码 - 复杂的解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2686709/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com