主页>技术社区>编程问答

BeautifulSoup:查找嵌套标签

eIT.com.cn 2023/3/11 8:27:15 阅读 4 次

打印


如何解决BeautifulSoup:查找嵌套标签?

我对此颇为困惑:

<span>Alpha<span class="class_xyz">Beta</span></span>

我尝试仅刮取第跨度文本“ Alpha”(不第二个嵌套的“ Beta”)。 你会怎么做?

我正在尝试编写来查找没有类的所有Span,但是某些不起作用...

谢谢。

解决方法

一种处理方式:

from bs4 import BeautifulSoup as bs
txt = """<doc>
<span>Alpha<span class="class_xyz">Beta</span></span>
</doc>"""
soup = bs(txt,'lxml')
target = soup.select_one('span[class]')
target.decompose()
soup.text.strip()

输出:

'Alpha'
,

这是获取没有类属性的每个Span标签文本的另一种方法:

from bs4 import BeautifulSoup

html = """
<body>
<p>Some random text</p>
<span>Alpha<span class="class_xyz">Beta</span></span>
<span>Gamma<span class="class_abc">Delta</span></span>
<span>Epsilon<span class="class_lmn">Zeta</span></span>
</body>
"""

soup = BeautifulSoup(html)
target = soup.select("span[class]")
for i in range(len(target)):   target[i].decompose()
target = soup.select("span")
out = []
for i in range(len(target)):   out.append(target[i].text.strip())

print(out)

输出:

['Alpha','Gamma','Epsilon']

或者如果您需要整个span标签:

from bs4 import BeautifulSoup

html = """
<body>
<p>Some random text</p>
<span>Alpha<span class="class_xyz">Beta</span></span>
<span>Gamma<span class="class_abc">Delta</span></span>
<span>Epsilon<span class="class_lmn">Zeta</span></span>
</body>
"""

soup = BeautifulSoup(html)
target = soup.select("span[class]")
for i in range(len(target)):   target[i].decompose()
out = soup.select("span")

print(out)

输出:

[<span>Alpha</span>,<span>Gamma</span>,<span>Epsilon</span>]





相关内容


热门栏目


特别声明


最新资讯
热讯排行



合作媒体友情链接
生活常识小贴士 软件开发教程 智慧城市生活网 息县通生活服务[移动版] 息县商圈[移动版] 美食菜谱
健康养生 法律知识 科技频道 电影影讯 留学考研学习 星座生肖|解梦说梦




关于我们 | 联系我们 | 合作媒体 | 使用条款 | 隐私权声明 | 版权声明

      Copyright © 2023 eIT.com.cn. All Rights Reserved. 豫ICP备2022012332号