スクレイピング

スクレイピングの優先順位

スクレピングの技術のあれこれ

ここでは主にパース方法の優先度を挙げる

結論

以下の優先度でパースできないかを探る

  1. JSON
  2. CSSセレクタ
  3. XPath
  4. 正規表現

まずはJSONがあればパースが一番楽

今どきはJavaScriptのフレームワークを使って画面を描画することが多い。
そうするとコンテンツの本体はJSONで降ってくることも多い。
JavaScriptで描画されるから、Seleniumを使わないと駄目だよねという判断もあるのかも知れないけど、実際にはJSONをGETするだけでよいケースは多い。

次にCSSセレクタ

ちゃんとしたデザイナーが入れば、CSSのクラスやIDは「コンテンツの意味に応じてネーミング」している。そしてデザイもCSSセレクタが書きやすいように書いている。なのでCSSセレクタでパースするのが楽になってるはず。

次にXPath

XPathは本来的にはXMLをパースするためのものなので、HTMLをパースするのに使うと、ちょっと表現が冗長になる。ただCSSセレクタに比べるとちょっとだけ機能が多い。テキストノードに含まれるテキストの部分一致で要素を取得したい時にはXPathが便利。

正規表現

テキストから値を部分的に取得するなら正規表現でかける。ただし読みづらい。上記の方法が全部使えなかった時の最後の手段。またパース後のテキストから、部分文字列を取り出す時には当然正規表現で取り出す。