我对 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 特殊字符替换为相应的英语单词(例如:& -> 和)吗?
您能提供的任何帮助将不胜感激
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 & oranges in New York is > the price of apples and oranges in Chicago
</p>
</body>
</html>
请注意,HTML 本身不一定符合 XML,并且可能还有其他原因导致 HTML 文档无法通过 XML 验证器。