【发布时间】:2023-03-19 20:40:01
【问题描述】:
我想使用Beautiful Soup Python 库的findAll() 函数,在HTML 中查找多个元素。这些元素必须满足多个标准,但独立。
例如,假设我的对象如下所示:
<div class="my_class">
<span class="not_cool">
<p name="p_1">A</p>
<p name="p_2">B</p>
</span>
<span class="cool">
<p name="p_3">C</p>
</span>
</div>
我想找到class="cool" 中的每一个span 以及name="p_1" 中的每一个p(这里只有一个,但想象一下,情况并非如此)。
我会做的:
.findAll("span",attrs={"class":"cool"})
.findAll("p",attrs={"name":"p_1"})
在一个完美的世界里,我想做:
.findAll([
["span",attrs={"class":"cool"}],
["p",attrs={"name":"p_1"}]
]}
当然,它不是这样工作的。
实际上,我尝试制作一个将 HTML 转换为 BBCode 的函数(我不想要也不能使用现有的函数)。 所以,我只需要保留一些我感兴趣的标签。
但是,我还必须知道这些元素的顺序。如果我使用两个不同的.findAll(),我将不知道在什么之前是什么,在什么之后是什么。
请问有人有解决办法吗?
【问题讨论】:
标签: python html parsing html-parsing beautifulsoup