Web scraping
RubyやらPythonやらPerlやらのLLを使っている紳士諸氏は、当然のことながらウェブスクレイピングに精通していること思う。 そんな先達たちにはお耳汚しのことと思うが、スクレイピングの手法について過去を振り返りながら四方山話を繰り広げたい。
なお、スクレイピングとはウェブサイト上から自身の必要とする情報だけを抽出することをいう。
全体としては以下な感じの構成を考えている。
- 指差し確認
- 検索と正規表現
- 巡回と定期実行
- HTMLパーサー
- RSSパーサー
- 自作検索エンジン
- 自作プロキシ
- DOM操作とXPath
- テストとヘッドレスブラウザ
筆不精な自分としては記事数を増やしたいので、それぞれごとにページを割くこととする。
指差し確認の時代
スクレイピングと自動化は切っても切り離せない関係にある。 あの人もこの人も、最初はマウスポインタでの指差し確認から入ってクリック!を経験したはずである。
現物を確認して右クリック!保存!
それがいつしか、プログラムを組み、対象を巡回し、条件に当てはまれば自動的にダウンロードを始めるスパイダーを使うようになる。 目的もちょっとだけ高尚なものになったり、ドキドキを忘れたり、出力を加工して再利用可能にしたりなど、段階を踏むことで成長して行くのだ。
おそらく今ももっともユーザーの多い手法である人力スクレイピングは、とてつもない時間を浪費することで知られている。
- ブラウザを立ち上げて
- 検索なりブックマークなりから特定のサイトを表示
- 必要なデータがあるか目視で確認
- 自分なりの方法で抽出
- 自分ルールでデータを保存
これを延々と、自分が満足するまで繰り返すのだ。 みんなが通る道なのだから、もちろん一昔前までは大手IT企業もこれを大まじめにやっていた。ディレクトリ型検索エンジンだ。
Googleが登場するまではこのタイプの検索エンジンが主流で、当時ホームページを作ったりしてた人はYahooへ登録申請を行ったことがあるんじゃないかと思う。 ディレクトリ型検索エンジンはいまでも一定の需要があるし、あとあと記事にする予定の自作検索エンジンを作るならOpen Directory Projectにお世話になったりもする。
外出の時間になったので、とりあえず今日はここまで。