「クローラー」とは、自動的にWebページの情報収集を行うプログラムのことです。
クローラーは別名で、ボット・ロボット・スパイダーなどと呼ばれていますが、どれも同じ自動的に働くプログラムを指しています。
「スクレイピング」とは、収集された情報を解析したり、ほんとうに必要な情報だけ抜き出したりすることを指します。
Webページから必要な情報を自動的に収集するには、クローリングによる収集から、webスクレイピングによる解析・抽出・加工などを行います。その後、データベースなどに保存して、それらの情報は、必要なときに出力して使います。
クローラーやスクレイピングを活用するメリットの1つは、1度プログラムを書いてしまえば、人力ではできなような膨大な作業をサクッとできるようになることです。
たとえば、自社商品のクチコミなどの情報をSNSの中から抽出してまとめのレポートを作成するのは、人力で行うと大変な作業になります。そこでクローラーや webスクレイピングを活用することで、より効率的に行うことができます。自社商品の評判や、反応した顧客の層など、マーケティングなどの情報源としても活用することが可能となります。
ただしクローリングには注意点があります。クローラーはWebサイトにアクセスするわけなので、そのサーバーには負荷がかかります。また、クローリングしてほしくないサイトもあったり、利用規約でクローリングを禁じてるサイトも存在します。
情報収集する相手側のサイトにとって、不都合とならないように気をつけなければなりません。商業サイトなどでサーバーをダウンさせてしまえば、場合によっては訴訟になったりする可能性もあるので、シッカリ注意しておかなければいけません。また、収集したデータの取り扱いにも著作権を忘れないようにしましょう。
情報元の利用規約などをきちんと理解・参照して行うことが大事です。相手のWebサイトやAPI提供元に、迷惑をかけないような”行儀のよい”クローラーを作ることが重要となります。
このように、クローラーやスクレイピングを活用するには、知っておくべき知識がいろいろあることがわかっていただけるかと思います。
それらをすべて自分でチェックしていくのも大変な作業ですよね。
そこで、クローラーの作り方から運用の仕方、クローリングするときの注意点など、まとめてサクッと理解できると便利ですよね。
今回はそれを実現している1冊をご紹介します↓
本書の構成は以下の通りです
本記事の概要
Part 1 基本編
Chapter 1 クローラーとスクレイピングを体験する
01、クローリングとスクレイピング
02、Wgetで始めるクローラー
03、UNIXコマンドでスクレイピング
Chapter 2 クローラーを設計する
01、クローラーの設計の基本
02、クローラーの持つ各処理工程ごとの設計と注意点
03、バッチ作成の注意点
Chapter 3 クローラーおよびスクレイピングの開発環境の準備とPythonの基本
01、Pythonがクローリング・スクレイピングに向いている理由
02、クローラーおよびスクレイピング用の開発環境を準備する
03、Python基礎講座
Chapter 4 スクレイピングの基本
01、ライブラリのインストール
02、Webページをスクレイピングする
03、RSSをスクレイピングする
04、データをデータベースに保存して解析する
Part 2 応用編
Chapter 5 クローラーの設計・開発(応用編)
01、クローラーをもっと進化させるには
02、print関数でログを出力する
03、loggingモジュールでログを出力して管理する
04、ログ出力ライブラリでログを管理する
05、並列処理を行う
06、並列処理を行う上での注意点
Chapter 6 スクレイピングの開発(応用編)
01、クロールしたデータを構造化データに変換する
02、XMLに変換する
03、JSONに変換する
04、CSVに変換する
05、Scrapyを使ってスクレイピングを行う
06、リンクを辿ってクロールする
07、データベースに保存する
08、デバッグを行う
09、自作プログラムにScrapyを組み込む
10、Chromeデベロッパーツールを利用する
Chapter 7 クローラーで集めたデータを利用する
01、フィードを作る
02、Flask で Web API を作る
03、Django で Web API を作る
04、タグクラウドを作る
Chapter 8 クローラーの保守・運用
01、定時的な実行・周期的な実行
02、多重起動の防止
03、管理画面の利用
04、通知機能を加える
05、ユニットテストの作成
Chapter 9 目的別クローラー&スクレイピング開発手法
01、JavaScriptで描画されるページをスクレイピングする
02、ソーシャルブックマークで気になる話題を自動ブックマーク
03、公的なオープンデータの利用
04、文化施設のイベントを通知する
05、Tumblrのダッシュボードをクロールして全文検索可能にする
Appendix クローラー&スクレイピングに役立つライブラリ
01、プロセス管理にSupervisorを使う
02、PyCharmを利用する
03、NumPyとSciPyを利用する
Index
となっています。
本書は、クローラーの基本であるWgetと、UNIXコマンドでのスクレイピングからはじまり、クローラーを設計する際に重要なことや注意点も学べます。
また、基本をこえて、高度なクローリングやスクレイピングをするために、Pythonによる実装を学べます。
Pythonって使ったことないよ!?という方も大丈夫です。
Pythonについては基礎から説明があり、プログラミングになじみがある方なら、これ1冊でPythonでの実装も可能となっています。Pythonによるクローリングやスクレイピング、データベースへの保存やデータの解析など、ひと通りのことを学べます。
加えて、実際に運用する際に役立つ知見も解説されています。
クローリング状況の把握や、並列化による効率的なクローリング、その注意点などが説明されています。また、Pythonによるさらに高度なスクレイピングについて、青空文庫のデータを例に示されています。XML、JSON、CSV などの構造化データへの変換や、Scrapy を使ったリンクを辿ったクローリングなども紹介されています。Chromeデベロッパーツールを使った効率的なスクレイピング方法も解説されており、より手軽にプログラミングするのに役立つ内容となっています。
さらに、集めたデータを提供するやり方についても学べます。自社の運営サービスを充実させたり、他社へ提供したりするなど、ビジネスへ活かしていくのに役立つ情報です。
クローラーの運用について、定時的・周期的な実行や、多重起動への対策、Flaskの管理画面ライブラリ(flask-admin)とDjango の管理画面機能(Django Admin)を使ったクロール対象をブラウザで閲覧・管理する方法などを学べ、日頃の運用の手間を軽減することが可能です。また、クロールシステムの稼働状況をメールやチャットに通知し、エラーの発生などのデータの変化を検知する機能を追加する方法なども解説されているのがうれしいところです。
クローラーの実装例として様々な具体例が示されています。
JavaScriptを用いたページ、はてなブックマーク、公的なオープンデータなどのクローリングから、文化施設のイベント情報などを収集する方法などがコード例とともに学べ、マイクロブログサービスの Tumbler をクロールしたり、形態素解析やNグラムを用いたインデックス作成によるWhooshを用いた全文検索の実装も学べ、自分オリジナルのアイデアを実装する際に参考になる情報ではないでしょうか。
本書は、Pythonになじみのうすいプログラマやエンジニアの方でも実装できるように、Pythonの基本的な使い方も学べるよう配慮されているので安心です。
また、Pythonでなにか面白いことをしてみたい!というあなたにもヒントとなる実装例がみつかるのではないでしょうか。
クローラー&スクレイピングの基礎から応用、運用のコツや注意点など、知っておくべき知識の全体像を学べるおすすめの本となっています。
こちらの記事もどうぞ
『「クローリング」や「スクレイピング」を学びたいあなたにチェックしてほしい良書、8冊+α はこちらです』
こちらもございます↓