xpath で除外条件を指定する方法のメモ。
特定のタグを除外する場合には、/*[not(self::{タグ})] のように xpath を記述します。
web ページからのテキスト抽出で、script タグなど特定のタグを常に除外するなら、
以下のように特定のタグを除外してから xpath で条件に合うタグを取得する方が楽かもしれません。
特定のタグを除外する場合には、/*[not(self::{タグ})] のように xpath を記述します。
import sys import lxml.html htmlstr = """ <html> <body> <div class="a"> <div class="aa">div_aa</div> <div class="ab">div_ab</div> <div class="ac">div_ac</div> <script></script> <style></style> </div> </body> </html> """ dom = lxml.html.fromstring(htmlstr) nodes = dom.xpath('//div[@class="a"]/*[not(self::script or self::style)]') for node in nodes: for text in node.itertext(): print(text)
web ページからのテキスト抽出で、script タグなど特定のタグを常に除外するなら、
以下のように特定のタグを除外してから xpath で条件に合うタグを取得する方が楽かもしれません。
nodes = dom.xpath('//script|//style') for node in nodes: node.getparent().remove(node) nodes = dom.xpath('//div[@class="a"]/*') for node in nodes: for text in node.itertext(): print(text)