• ベストアンサー

xPathで全てのhタグを取得したいのですが

Python2.6とlxml.htmlにて、 例えばh2タグ内を全て取得したいのですが、上手くいきません。 <h2>タグが3つあるとして、 自分は、//h:h2や、//*[name()='h2']などと指定し、text()を行いましたが上手くいきませんでした。 最初の方は、未定義の名前空間プレフィックス、2つめは最初のh2タグの内容しか取れませんでした。 色々試したのですが、ちょっと方法が思い付きません。 アドバイスいただけないでしょうか? 宜しくお願い致します。 カテゴリをXMLとその他のプログラミングで迷いました。 もしこちらではないようでしたら移動いたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • wetti
  • ベストアンサー率66% (2/3)
回答No.1

よくわからんけど、こういうこと? import lxml.html root = lxml.html.fromstring(r'''<html> <body> <h2>hello world</h2> <h2>foo <em>bar</em> baz</h2> </body> </html>''') res = root.xpath('//h2') print res[1].text # foo print res[1].text_content() # foo bar baz print res[1][0].text # bar print res[1][0].tail # baz 名前空間うんぬんの件はよく意味がわからない。 HTMLを処理しようとしてるんじゃないの?

参考URL:
http://lxml.de/lxmlhtml.html#parsing-html