htmlのスクレイピングで結合されたテーブルは厄介

htmlのスクレピングをしていてテーブルデータを1行ずつ抜き出して使いたいことは多いと思いますが(特に古いタイプのデザインだとテーブルでレイアウトしてある)、セルが結合されていると行毎の要素数が変わるので一筋縄ではいきません。結合されていなければtr要素を抽出して、td要素はtr[0]のようなイメージで取り出せますが、行毎に要素数が異なるとオフセットがずれてしまうので厄介です。

このようなテーブルからデータを抜き出したい時はtd要素毎に特徴がないかを確認してます。例えば、class属性が設定されていないかやテキスト部分が特定の形式(MM:DDとか)になっていなかなど。要は他のtdと区別がつけば後はその特徴を条件判断に使ってtd要素を抽出する感じです。もしかしたら超絶便利なライブラリがあって他にいい方法があるかもですが、今の所こんな感じでやってます。

sponsor