gpt4 book ai didi

python - 使用 Beautiful Soup - Python 在 HTML 中查找 1 级内的所有文本

转载 作者:行者123 更新时间:2023-11-28 17:46:48 26 4
gpt4 key购买 nike

我需要用漂亮的汤来完成以下

示例 HTML

<div id = "div1">
Text1
<div id="div2>
Text2
<div id="div3">
Text3
</div>
</div>
</div>

我需要对此进行搜索以在列表的单独实例中返回给我

Text1
Text2
Text3

我尝试执行 findAll('div'),但它多次重复相同的文本,即它会返回

Text1 Text2 Text3
Text2 Text3
Text3

最佳答案

好吧,你的问题是 .text 还包括来自所有子节点的文本。您必须手动仅获取作为节点直接子节点的那些文本节点。此外,给定的文本节点中可能有多个文本节点,例如:

<div>
Hello
<div>
foobar
</div>
world!
</div>

您希望它们如何串联?这是一个用空格连接它们的函数:

def extract_text(node):
return ' '.join(t.strip() for t in node(text=True, recursive=False))

以我为例:

In [27]: t = """
<div>
Hello
<div>
foobar
</div>
world!
</div>"""

In [28]: soup = BeautifulSoup(t)

In [29]: map(extract_text, soup('div'))
Out[29]: [u'Hello world!', u'foobar']

你的例子:

In [32]: t = """
<div id = "div1">
Text1
<div id="div2">
Text2
<div id="div3">
Text3
</div>
</div>
</div>"""

In [33]: soup = BeautifulSoup(t)

In [34]: map(extract_text, soup('div'))
Out[34]: [u'Text1 ', u'Text2 ', u'Text3']

关于python - 使用 Beautiful Soup - Python 在 HTML 中查找 1 级内的所有文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17030605/

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