2016-03-06 49 views
1

我已經HTML結構是這樣的:Beatifulsoup:如何找到所有元素的第二個父母具有確切的屬性?

<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>元件第二級父一個具有與匹配到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")) 

回答

2

我們可以做,在一個單一的去與CSS selector

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

其中>意味着直接的父子關係。

+0

因爲我發現我想要獲取的元素在DOM中不可見(它們在頁面加載後用JS加載),但此解決方案是正確和有用的,謝謝。我只需要使用find_all而不是select。 – Polyakoff

相關問題