如何使用 Python 替换 HTML 标签内文本中的 XML 特殊字符

问题描述 投票:0回答:1

我对 Python 还很陌生。我一直在从事一个网页抓取项目,该项目从各种网页中提取数据,使用这些数据构建一个新的 HTML 页面,并将该页面发送到文档管理系统

文档管理系统有一些基于 XML 的解析器来验证 HTML。如果 XML 特殊字符出现在 HTML 标签内的文本中,它将拒绝它。例如:

<p>The price of apples & oranges in New York is > the price of apples and oranges in Chicago</p>

会因为

&
>
而被拒绝。

我考虑在发送 HTML 文档之前使用

String.replace()
,但它不够广泛,而且我不想删除
&
>
等字符的有效出现,例如当它们构成标签或属性

有人可以建议一种解决方案,将 XML 特殊字符替换为相应的英语单词(例如:& -> 和)吗?

您能提供的任何帮助将不胜感激

python html xml
1个回答
0
投票

BeautifulSoup 驯服不守规矩的 HTML,并将其呈现为完整的 HTML。您可以使用它来修复像这样的引用。

from bs4 import BeautifulSoup

doc = """<body>
<p>The price of apples & oranges in New York is > the price of apples and oranges in Chicago</p>
</body>"""

soup = BeautifulSoup(doc, features="lxml")
print(soup.prettify())

输出

<html>
 <body>
  <p>
   The price of apples &amp; oranges in New York is &gt; the price of apples and oranges in Chicago
  </p>
 </body>
</html>

请注意,HTML 本身不一定符合 XML,并且可能还有其他原因导致 HTML 文档无法通过 XML 验证器。

© www.soinside.com 2019 - 2024. All rights reserved.