以下に、を使用してこれを実現する方法を示しますlxml
。
>>> from lxml.etree import fromstring
>>> tree = fromstring('''<section> Fubar, I'm so fubar, fubar and even more <fref bar="baz">fubare</fref>. And yet more fubar. </section>''')
>>> elem = tree.xpath('/section/fref')[0]
>>> elem.text
'fubare'
>>> elem.tail
'. And yet more fubar. '
>>> elem.getparent().text
" Fubar, I'm so fubar, fubar and even more "
lxml.etree
チュートリアルから:
テキストのみを読み取りたい場合、つまり中間タグを使用しない場合は、すべてのテキスト属性とテール属性を正しい順序で再帰的に連結する必要があります。ここでも、tostring()関数が助けになりますが、今回はメソッドキーワードを使用します。
>>> from lxml.etree import tostring
>>> tostring(html, method="text")
" Fubar, I'm so fubar, fubar and even more fubare. And yet more fubar. "
これを行うXPathの方法もあります。これは、リンクされたページで説明されています。