2009-06-22 9 views
2

私はテキストの文字列を取得しようとしており、段落/文書内の残りのテキストをhtmlから "抽出"しています。ElementTree/lxmlでテキスト文字列の親タグを見つける

私の現在のアプローチは、lxmlで解析されたhtml内の文字列の「親タグ」を見つけることです。

たとえば、「TEXT STRING HERE」というツリーを検索して「p」タグを戻します(この問題を解決するには、より良い方法を知っていればすべて耳にします)。 (私は事前にhtmlの正確なレイアウトを知らないことに注意してください)

<html> 
<head> 
... 
</head> 
<body> 
.... 
<div> 
... 
<p>TEXT STRING HERE ......</p> 
... 
</html> 

あなたの助けてくれてありがとう!

答えて

3

これはElementTreeで簡単に行う方法です。 HTML入力が有効なXMLである必要があります(したがって、HTMLに適切な終了タグを追加しました)。

import elementtree.ElementTree as ET 

html = """<html> 
<head> 
</head> 
<body> 
<div> 
<p>TEXT STRING HERE ......</p> 
</div> 
</body> 
</html>""" 

for e in ET.fromstring(html).getiterator(): 
    if e.text.find('TEXT STRING HERE') != -1: 
     print "Found string %r, element = %r" % (e.text, e) 
関連する問題