Beatifulsoup:如何找到其中第二个父元素具有确切属性的所有元素?

时间:2016-03-06 19:24:56

标签: python python-3.x lambda beautifulsoup anonymous-function

我的html结构如下:

<div class="value_i_need_to_match">
    <div>
        <a href="..."</a>
        <a href="..."</a>
        <a href="..."</a>
    </div>
</div>
<div class="some_other_value">
    <div>
        <a href="..."</a>
        <a href="..."</a>
        <a href="..."</a>
    </div>
</div>

我需要提取所有<a>元素,其第二级父元素的class属性具有与value_i_need_to_match匹配的值。这该怎么做? 我试过了:

 soup_post.find_all(
            lambda tag: tag.name == "a" and tag.parent.parent.find('div').attrs['class'] is 'value_i_need_to_match'))

soup_post.find_all(
            lambda tag: tag.name == "a" and tag.findParent('div').attrs["class"] == "value_i_need_to_match"))

1 个答案:

答案 0 :(得分:2)

我们可以一次性使用CSS selector

soup_post.select(".value_i_need_to_match > div > a")

其中>表示直接的父子关系。