使用漂亮的Soup Python在HTML中查找1级内的所有文本

2024-05-15 16:12:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要用靓汤来完成以下任务

示例HTML

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

我需要做一个搜索,在列表的不同实例中返回给我

^{pr2}$

我试着做一个findAll('div'),但它重复了同一个文本多次,即它会返回

Text1 Text2 Text3
Text2 Text3
Text3

Tags: 实例文本divid示例列表htmltext1
1条回答
网友
1楼 · 发布于 2024-05-15 16:12:23

{cd1>也包括所有子节点的问题。您只需要手动获取节点的子级的文本节点。另外,给定的文本节点中可能有多个文本节点,例如:

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

您希望它们如何连接?下面是一个将它们与一个空格连接起来的函数:

^{pr2}$

以我的例子:

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']

相关问题 更多 >