gpt4 book ai didi

python - 识别标签结构不同的分支

转载 作者:太空宇宙 更新时间:2023-11-04 05:49:20 25 4
gpt4 key购买 nike

我希望仅通过标签检查两个 html 是否不同,而不考虑文本并挑选出那些分支。

例如:

html_1 = """
<p>i love it</p>
"""
html_2 = """
<p>i love it really</p>
"""

它们共享相同的标签结构,因此看起来是一样的。然而:

html_1 = """
<div>
<p>i love it</p>
</div>
<p>i love it</p>
"""
html_2 = """
<div>
<p>i <em>love</em> it</p>
</div>
<p>i love it</p>
"""

我希望它返回 <div>分支,因为标记结构不同。可以lxml , BeautifulSoup或者其他一些库实现这个?我正在尝试找到一种方法来实际挑选出不同的分支。

谢谢

最佳答案

一个更可靠的方法是构造一个 Tree此处讨论的文档中的标签名称:

这是一个基于 treelib.Tree 的示例工作解决方案:

from bs4 import BeautifulSoup
from treelib import Tree


def traverse(parent, tree):
tree.create_node(parent.name, parent.name, parent=parent.parent.name if parent.parent else None)

for node in parent.find_all(recursive=False):
tree.create_node(node.name, parent=parent.name)
traverse(node, tree)


def compare(html1, html2):
tree1 = Tree()
traverse(BeautifulSoup(html1, "html.parser"), tree1)
tree2 = Tree()
traverse(BeautifulSoup(html2, "html.parser"), tree2)

return tree1.to_json() == tree2.to_json()

print compare("<p>i love it</p>", "<p>i love it really</p>")
print compare("<p>i love it</p>", "<p>i <em>love</em> it</p>")

打印:

True
False

关于python - 识别标签结构不同的分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30985658/

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