Python: lxml.htmlを用いたタグの除去方法

2012年2月19日

lxmlを使えば、タグの除去も超簡単です!

tostring()もしくはXPathを使ってできるのですね〜。

【tostring()】

1
2
3
4
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")

【XPath】

1
2
3
4
from lxml.html import fromstring
  et = fromstring(html)
  xpath = r'//text()[name(..)!="script"][name(..)!="style"]'
  text = ''.join([text for text in et.xpath(xpath) if text.strip()])

 

どちらでもテキストノードを抽出できますが、細かな制御をするなら後者の方がオススメです。