【问题标题】:Parsing HTML without adding and removing tags在不添加和删除标签的情况下解析 HTML
【发布时间】:2019-04-10 07:24:42
【问题描述】:

在 Beautifulsoup 中,当您解析 HTML 时,它会尝试为您完成 HTML,例如:

HTML = """<!doctype html>
<html>
<body>
<img src='test'/>
<p
"""
from bs4 import BeautifulSoup
print BeautifulSoup(HTML, "html.parser")

输出将是:

<!DOCTYPE doctype html>

<html>
<body>
<img src="test"/>
    &lt;p
    </body></html>

有没有一种方法可以在不编辑任何标签或 HTML 数据(标签、&lt;&gt; 等)的情况下按原样解析 HTML ,或者是否有替代方法“按原样”解析 HTML 的方法?

【问题讨论】:

  • “它会尝试为你完成 HTML”——它只是遵循 HTML 规范中定义的 HTML 解析规则。

标签: html python-2.7 parsing beautifulsoup


【解决方案1】:

没有。

解析的重点是将 HTML 源代码转换为文档的模型(以便您可以通过编程方式对其进行操作)。

&lt;p 变成一个包含 &lt;p 的文本节点,&lt;html&gt;&lt;body&gt; 标记生成 HTML 和 BODY 元素

然后对模型进行任何操作。

然后,在某个时候,您将模型转换回 HTML。这没有(也不能,至少不合理)考虑到原始源代码。它转义文本节点中的特殊字符(如&lt;),并为可以具有结束标签的元素生成结束标签。结果是一个规范化的文档。

【讨论】:

  • 那么没有替代方法了吗?
猜你喜欢
  • 2021-05-20
  • 2021-08-16
  • 2021-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-16
  • 1970-01-01
相关资源
最近更新 更多