tostring()を使うと、取得した任意のDOM要素に対して文字列展開ができます。
例えば以下のような感じです。
1 2 3 4 5 | from lxml import etree dom = etree.fromstring(u'<p>Hello<br>world!</p>', parser=HTMLParser()) enums = dom.xpath("//p") etree.tostring(enums[0], method='text', encoding="utf-8") |
その際、encoding属性で出力時の文字コードを指定する必要があることに注意して下さい。
これが無いと文字化けしてしまいます。
ちなみにtostring()を使うとテキストを抽出する意外にXML化したりHTML化したりすることができます。
1 2 3 4 5 6 7 8 | dom = etree.fromstring(u'<p>Hello<br>world!</p>', parser=HTMLParser()) enums = dom.xpath("/") etree.tostring(enums[0], method='xml', encoding="utf-8") >>> '<p>Hello<br/>world!</p>' etree.tostring(enums[0], method='html', encoding="utf-8") >>> '<p>Hello<br>world!</p>' etree.tostring(enums[0], method='text', encoding="utf-8") >>> 'Helloworld!' |