lxml で html からテキストを抽出する方法のメモ。
text では、先頭の子要素のテキストしか抽出できませんが、
itertext() では、配下の全要素のテキストを抽出することができます。
実行結果
text では、先頭の子要素のテキストしか抽出できませんが、
itertext() では、配下の全要素のテキストを抽出することができます。
import sys import lxml.html htmlstr = '<html><body><div class="a">abc<h1>h1</h1>def<h2>h2</h2>ghi</div></bo\ dy></html>' dom = lxml.html.fromstring(htmlstr) div = dom.xpath('//div[@class="a"]')[0] print('div.text') print(div.text) print('div.itertext()') print('\n'.join(div.itertext()))
実行結果
div.text abc div.itertext() abc h1 def h2 ghi