
クローリングと、スクレイピングって、似たような処理だけど、何が違うか分からないという人に仕事でも役立てる事ができる内容をお伝えします。
インターネットで、毎日特定のWebサイトを閲覧したり、情報取得をしている人などは、自分の作業効率が向上するかもしれません。
また、ホームページを立ち上げている人が、自分のホームページに別サイトの情報を連動して動的に表示したい場合などに役立つ、スクレイピング処理を、
プログラミングを含めて学習できると、横領幅は無限大ですよ。
クローリングとスクレイピングの違い
まず、混同しやすい「クローリング」と「スクレイピング」の違いについて、ざっくりと理解しておきましょう。
クローリング(Crawling)
→ Webサイトのリンクを辿りながら、ページを自動で巡回していく処理です。
→ Googleなどの検索エンジンが行っている動作が、まさにこの「クローリング」です。
→ 目的は、情報を収集する「対象URLリスト」を作ることが多いです。
スクレイピング(Scraping)
→ 特定のWebページのHTMLから、必要なデータを「抽出」する処理です。
→ 例えば、価格、タイトル、レビューなどをHTMLからピンポイントで取り出すような使い方です。
→ クローリングで取得したURLから、スクレイピングで情報を抜くという流れが一般的です。
実際に使えるシーン
スクレイピングは、いろんな現場で使えます。
* EC価格の比較や、競合調査の自動化
* 求人情報の収集とリスト化
* ニュース記事や天気、株価などの自動更新表示
* Webデータを社内システムへ取り込むAPI代替処理
これらを人の手で毎日やるのは非効率なので、スクレイピングで自動化できれば、大幅な工数削減になります。
毎日別会社(競合会社、ライバル会社)などから、商品価格や、指標値、最新情報などをウォッチして、
エクセルにまとめているような作業をしているのは、ロボット作業として、スクレイピング処理をすると、
もはやその作業は機械が自動的に行ってくれますからね。
これを、仕事を奪われたと思うか、仕事を効率化したと思うかは、その作業者次第ですが・・・
スクレイピングの学習ステップ(実践的アプローチ)
初心者でも始めやすい流れとしては、以下のような手順で学習していくと、理解が深まります。
1. HTMLの基本構造を理解する
→ `div`, `span`, `a`, `table`, `ul`, `li`などのタグ構成や、`class`や`id`による指定の仕方を知る。
2. ブラウザの開発者ツールを使いこなす
→ Chromeで右クリック「検証(Inspect)」を使って、欲しいデータのHTML構造を特定する。
3. プログラムでデータを取得してみる
→ Pythonであれば、`requests`でHTMLを取得、`BeautifulSoup`でデータ抽出。
→ JavaScriptなら、`puppeteer`や`cheerio`が便利。
もちろん、XMLRequestや、fetchでもデータ取得が可能ですが、
CORS制約に引っかかる場合に、JSONPを使った裏技取得方法を覚えると比較的簡易にデータ取得する事もできます。
4. クローラーを組み合わせる
→ 複数ページにまたがるデータも、リンクをたどって収集できるようにする。
再帰処理などのプログラミングがかける必要がありますが、簡易な書き方から汎用的な書き方などを順を追って学習することで、しっかりと理解していく事ができます。
5. スケジューリングや自動化
→ `cron`や`GitHub Actions`を使って、定期的に情報収集ができるように。
サーバーサイドでの自動
バッチ処理を行う場合にこの方法は必須です。
寝ていても情報が自動で取得したい人は、この方法を習得する必要があります。(サーバー学習も少しだけ必要になります)
6. 取得データの整形と保存
→ CSV、JSON、DBなど、用途に応じた保存方法を学ぶ。
学習コストはかなり高いですが、汎用性や、データ保全性などを重視する場合(仕事で使う場合)は、必須の学習です。
注意すべき点
ただし、スクレイピングにはマナーとルールがあります。
(←ここ重要)
robots.txtの確認
→ サイトによっては、クローリング・スクレイピングを禁止している場合があります。
過剰アクセスに注意
→ 1秒に何十回もアクセスすると、相手サーバーに負荷がかかるため、必ず「スリープ処理」や「間隔の制御」を入れる。
できるだけ1回のアクセス(2桁アクセスなどは絶対に禁止)
法的リスクの確認
→ 特に商用利用の場合、情報の転載や利用には著作権や利用規約に注意が必要です。
利用規約や、サービス規約などに目を通して、法的にスクレイピングが禁止されていないかを確認しなければ、犯罪行為につながる可能性もあるので、この点不安な人は詳しい人に聞いて理解を深掘りする必要があります。
あとがき
次回は、実際にクローリング、スクレイピングを行うサンプルコードをご紹介します。
まずは小さなデータ収集から始めて、作業を一つずつ自動化していく喜びを体験してみてください。
また、今回のクローリング・スクレイピングについて理解ができない(わかりにくい)、と感じた人は是非コメントまたはお便りにて、ご意見をお伝えくださいませ。
0 件のコメント:
コメントを投稿