2011-03-08 10 views
4

私は美味しいスープを使用しています。美しいスープ - コメントの隣の位置に基づいてタグを特定します

タグ(パーズツリーには含まれていないもの)の横の位置に基づいてタグを保持できる方法はありますか?

たとえば、のは、私が持っているとしましょうが...

この例では
<html> 
<body> 
<p>paragraph 1</p> 
<p>paragraph 2</p> 
<!--text--> 
<p>paragraph 3</p> 
</body> 
</html> 

、どのように私は私がコメント「<!--text-->」を探してることを考えると<p>paragraph 2</p>を特定のでしょうか?

ありがとうございました。

答えて

6

コメントは他のノードと同様にBeautifulSoup解析ツリーに表示されます。たとえば、テキストsome comment textとのコメントを見つけた後、あなたができる前の<p>要素プリントアウトする:

from BeautifulSoup import BeautifulSoup, Comment 

soup = BeautifulSoup('''<html> 
<body> 
<p>paragraph 1</p> 
<p>paragraph 2</p> 
<!--some comment text--> 
<p>paragraph 3</p> 
</body> 
</html>''') 

def right_comment(e): 
    return isinstance(e, Comment) and e == 'some comment text' 

e = soup.find(text=right_comment) 

print e.findPreviousSibling('p') 

を...それはプリントアウトします:

<p>paragraph 2</p> 
+0

おかげで非常に多くのマークを。それは素晴らしいことです。 – Kim

関連する問題