ぽんぽこ日記

プログラミング、読書、日々の生活

書評:「Python クローリング&スクレイピング」

先日のブログ記事でも紹介しましたが、加藤耕太氏(id:mi_kattun)の著した「Python クローリング&スクレイピング」という本のレビューをお手伝いさせていただきました。この本のご紹介をしてみたいと思います。

日々ITの仕事していると、定型的なデータを提供するためのサイトにもかかわらず、データそのものが単なるWebページとして表現されていることに出くわします。

エンジニアとしては、

「なんでもっとマシンリーダブルな形式でデータを公開してくれないんだろう?」

と思うものですが、嘆いたところでこうしたページがすぐになくなるわけではありません。

本書はこうしたサイトを巡回(クローリング)してWebページを取得し、そこから定型処理可能な状態として取り出す(スクレイピング)技術について書かれたものです。

クローリング&スクレイピングのテクニックを中心に書かれてはいますが、それだけではなくオープンデータの定義に始まり、法律面の注意事項、収集後のpandasを用いたデータ分析にも触れるなど、Webから得られるデータを収集する行為にまつわる事柄に、幅広く目配りが効いた力作だと思います。

筆者が特筆すべき点に感じたことは、「7章 クローラーの継続的な運用・管理」です。 クローリング、スクレイピングは確実に定期的に実行されることが重要です。クローリング&スクレイピングのためのスクリプトが出来てから、それを安定運用するための方法に章を割いているところがとても実践的であると感じました。

筆者が公開しているiOSアプリ「大気くん」においても、クローリング&スクレイピングの技術を使って大気汚染の数値を取り出しています。Obj-Cによるアプリ本体の開発よりも、Pythonで書かれたクローリング&スクレイピングを行うバッチプログラムの開発作業の方に遙かに時間がかかっています。また、運用中の現在も、ときどき同バッチプログラムがコケているの気づいて、データをあわてて修復することがあります。安定運用はとても重要です。本書がもっと早く出ていればかなり楽が出来たんじゃないかと思いました(笑)。つまり経験者からみてもそれだけ内容が実践的・具体的である証左ではないかと思います。

ところで、昨今プログラミング言語としてのPythonの人気が高まっています。書名にあるように、本書はPythonを用いた技術の本です。本書にはサンプルプログラムが豊富に示されているので、Python初学者には、プログラミングのコーディング例としても参考になると思います。

最後に、手前味噌ではございますが、本書で得た技術をつかって、取得したデータを分析するフェーズにおいては、是非下記の拙著も参考にしていただけると幸いです。書名からはゲームに特化している内容に見えますが、実はゲームに限らず、扱うデータのジャンルを問わずデータ分析基盤を構築する際の参考になるんじゃないかと思います。しかもこちらの本もPythonで書かれているので、そういう意味でもシームレスにお役に立てるかとおもいます。