我想使用Beautiful SoupPython库的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
,以及每一个带有{p
(这里每一个都只有一个,但假设情况并非如此)。在
个人而言,我将:
^{pr2}$在一个完美的世界里,我想做的是:
.findAll([
["span",attrs={"class":"cool"}],
["p",attrs={"name":"p_1"}]
]}
但当然,它不是这样工作的。在
实际上,我试着做一个将HTML转换成BBCode的函数(我不想要也不能使用现有的)。 所以,我只需要保留一些我感兴趣的标签。在
不过,我还必须知道这些元素的顺序。如果我使用两个不同的.findAll()
,我将不知道什么是在什么之前,什么是在什么之后。在
有人有解决办法吗?在
你必须使用搜索功能:
树中的每个标记对象都将传递一个可调用参数;如果可调用参数返回
True
,则包含该参数。上面的lambda
测试标记名是否匹配以及是否存在特定属性。class
属性的特殊之处在于当它存在时,它总是被解析为一个列表。在请注意,对于beautifulsoup4,camel case函数名已被弃用;带有下划线名称的小写函数名是规范方法。如果您仍在使用BeautifulGroup 3,您可能需要升级。版本3已经两年多没有更新了。在
只需通过迭代所有所需的
spans
,找到每个span
的所有子类。在相关问题 更多 >
编程相关推荐