我需要用美丽的汤来完成以下任务
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']
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)