"lxml" カテゴリのページ

Python: lxmlを使って、タグを巡回する方法

HTMLの分析を行う際、タグを巡回する必要がありますがそんなとき、lxmlを使うと便利です。

lxmlでは、タグの入れ子関係が壊れたHTMLの修復も自動で行ってくれる機能がありますのでユーザは細かいことを気にする必要はありません。この修復機能のおかげで、入れ子の修復(閉じ括弧がないタグは閉じ括弧を付与)を行ってくれるため、HTMLをツリーとして、つまりDOMツリーとして捉えることができるようになるのです。

DOMツリーだから何やねん!という方は読み飛ばしてもらっていいのですが、ツリーであるおかげで親ノード(親タグ)をたぐったり、兄弟ノード(兄弟タグ)をたぐったりが簡単にできるようになるのですね。lxmlってすばらしい。

木を巡回する手法はいろいろとありますが、今日は深さ優先で巡回する手法をみてみましょう。

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

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

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

Python: lxmlの文字コード(tostring())

lxmlは文字コードを厳格に定義しており、入力時は必ず「unicode」化しておく必要があります。

これだけでも注意しておかなければならない点ですが、lxmlには、出力用の「tostring()」というメソッドを持っており、ここでも文字コードの注意が必要となってきます。

Python: lxmlを使って高速にaタグを取得する方法

PythonでXML/HTMLをパースする場合、

 

  • SAXベースのlxml

の大きく2つが存在しています。

前者は以前このブログでも紹介していますので、ご覧下さい。DOMベースなので気軽にパース処理することができる反面、少々処理が重いです。

一方後者は、XPATHと呼ばれる問い合わせ言語(まぁ、SQLのようなもんです)をある程度理解する必要はありますが、メモリもそんなに使わず大変高速なため、phactoryではよく使っています。

今日はこのlxmlを使ってタグ抽出する方法を紹介します。

カテゴリー