1
ページを取得する
HTTPリクエストを送り、HTMLを受け取る。
2
ページを描画する
ページのJavaScriptを実際のブラウザで実行する。
3
データを特定する
XPathやCSSセレクタで要素を指し示す。
4
抽出して整える
値を取り出し、正規表現で整形する。
5
サイトを遷移する
ページネーションやログインの壁を通過する。
6
出力を保存する
CSV・JSON・データベース・下流のAPI。
ページを取得する
すべてはリクエストから始まります。スクレイパーはURLにHTTPリクエストを送り、レスポンス — 多くはHTML、ときにJSON — を受け取ります。サーバー側で描画されるシンプルなページなら、この1ステップで必要なものがすべて手に入ります。問題は、このレスポンスがサーバーの送る初期ペイロードにすぎないことです。最近の多くのサイトでは、それはほぼ空の入れ物です。ページを描画する
サイトがJavaScriptでコンテンツを構築している場合、欲しいデータは初期HTMLには含まれず、ページのスクリプトが実行された後にはじめて現れます。描画とは、そのスクリプトを実際のブラウザで実行し、完全なコンテンツを実体化させる段階です。ここで使うブラウザ実行環境が、ページの読み込みの忠実さと、メモリ・速度のコストを左右し、JavaScriptで描画されるページのスクレイピングの中核となります。データを特定する
ページが完全に読み込まれたら、スクレイパーは欲しい要素 — 価格、タイトル、テーブルの一行 — を正確に指し示さなければなりません。これはXPathやCSSセレクタで行い、要素がページ構造のどこにあるかを記述します。良いセレクタは、わずかなレイアウト変更に耐えるスクレイパーと、サイト更新のたびに壊れるスクレイパーの分かれ目です。抽出して整える
要素を特定すると、その生のコンテンツが得られます。抽出はそこから値を取り出し、整形はそれをきれいにします。スクレイピングした価格が、数値だけが欲しいのに"$1,299.00 USD" という形で得られることもあります。正規表現と後処理ルールで生のテキストを削り、分割し、再整形して、実際に保存したい構造化フィールドにします。