dak ブログ

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

xpath で除外条件を指定

2021-12-21 20:43:35 | python
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)


この記事についてブログを書く
« lxml で html からテキストを... | トップ | python で相対 URL を絶対 UR... »

python」カテゴリの最新記事