dak ブログ

python、rubyなどのプログラミング、MySQL、サーバーの設定などの備忘録。レゴの写真も。

lxml で html からテキストを抽出する方法

2021-12-16 23:48:44 | python
lxml で html からテキストを抽出する方法のメモ。

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