2017-01-18 5 views
0

私はfind_all()メソッドを使って次の要素を持つタグh1をpとして選択しようとしましたが、空のリストを取得しています。ここに私のコードはbeautifulsoupを使って2つの連続したタグに基づいてタグを選択

def has_h1_followedby_p(tag): 
    return tag.name == 'h1' and tag.next_siblings.name == 'p' 

soup = BeautifulSoup(open(filepath), 'html.parser') 
h1_tags = soup.find_all(has_h1_followedby_p) 

私はちょうど十分に単純なように状態が間違っているか知りたいのですが。私はどんな提案に対しても非常に感謝しています。あなたが単一のものを必要としながら、

答えて

2

next_siblingsは、すべての次の兄弟にマッチするジェネレータです:私たちはさらにtag.next_sibling truthinessチェックを適用

tag.name == 'h1' and tag.next_sibling and tag.next_sibling.name == "p" 

注 - h1が持っていないときの状況があることができ次の兄弟。

それとも、p次の兄弟を検索することができます(これはしかし、以前のバージョンと同じではありません):alecxe、このような積極的な応答のための

tag.name == 'h1' and tag.find_next_sibling("p") 
+0

おかげで、それが魅力のように働きました。 –

関連する問題