Posted at

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

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

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


結論

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


  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が便利。


正規表現

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