dak ブログ

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

lxml で xpath で text を検索した際の返却値のクラス

2022-10-12 23:07:41 | python
lxml で xpath で text を検索した際の返却値のクラスは lxml.etree._ElementUnicodeResult のリストです。
返却値を str クラスにするには、str(...) で str クラスに変換します。
import sys
import lxml.html

htmlstr = """
<html>
<body>
  <div class="d1">
    <div id="d2-1">
      <div id="d3-1">
        <p id="p4-1">p4-1 text</p>
        <p id="p4-2">p4-2 text</p>
      </div>
      <div id="d3-2"></div>
    </div>
    <div id="d2-2">
      <p id="p3-3">p3-3 text</p>
      <p id="p3-4">p3-4 text</p>
    </div>
  </div>
</body>
</html>
"""

dom = lxml.html.fromstring(htmlstr)

texts = dom.xpath("//div/p/text()")
for text in texts:
    print(f"text: {type(text)}: [{text}]")
    print(f"str:  {type(str(text))}: [{str(text)}]")