【发布时间】:2020-04-04 12:23:05
【问题描述】:
我正在使用 lxml 从 html 文档中提取文本,但我无法从文本中获取某些字符以正确呈现。这可能是一件愚蠢的事情,但我似乎无法找到解决方案......
这是 html 的简化版本:
<html>
<head>
<meta content="text/html" charset="UTF-8"/>
</head>
<body>
<p>DAÑA – bis'e</p> <!---that's an N dash and the single quote is curly--->
</body
</html
代码的简化版本:
import lxml.html as LH
htmlfile = "path/to/file"
tree = LH.parse(htmlfile)
root = tree.getroot()
for para in root.iter("p"):
print(para.text)
我的终端中的输出有那些带有字符错误的小框(例如,
应该是“-E”),但是如果我从那里复制粘贴到这里,它看起来像:
>>> DAÃO bisâe
如果我在终端中执行简单的echo + 问题字符,它们会正确呈现,所以我认为这不是问题。
html 编码为 UTF-8(检查 docinfo)。我已经在代码的各个地方尝试过 .encode() 和 .decode() 。我还尝试了带有 utf-8 声明的 lxml.etree.tostring()(但是 .iter() 不起作用('bytes' 对象没有属性 'iter'),或者如果我把它放在代码,.text 不起作用('bytes' 对象没有属性 'text'))。
任何想法出了什么问题和/或如何解决?
【问题讨论】:
-
我自己编写了几个基本网站,奇怪的是这些字符,ñ - 等,首先在源 html 中。我希望它们不会在浏览器中正确呈现,但确实如此。也许这与问题有关。
标签: python character-encoding lxml