【実践技術書】Python クローリング&スクレイピング
Pythonを用いてWebクローリング・スクレイピングを行います。基礎的な知識に加えて、実装を行う際の設計の部分でも参考になる点が多いです。
スクレイピングを行う上で必要になる知識やライブラリなどが一通り経験できます。サンプルコードにコメントが丁寧に書かれているので、勉強中の人にもおすすめです。処理の内容を読み進めながら読んでいくとわかりやすいです。
概要
-
クローリング・スクレイピングとは何か
基礎的な語句の説明です。Pythonは標準ライブラリが充実しているので、今回のような目的でよく使われます。すぐ試せるように作られていることも良い点だと思います。
基本的にはMacでの実装を想定しています。Windowsでも付録に記載のVagrantでLinuxの仮想環境を立ち上げて試すことができます。
この章で基礎的な理解のために、Pythonを用いずにwgetなどのLinuxのコマンドでスクレイピングを行います。
-
Pythonではじめるクローリング・スクレイピング
Pythonと標準ライブラリでスクレイピングを行います。
-
強力なライブラリの活用
サードパーティライブラリを用いて難しい処理を実装します。lxmlとBeautifulSoupを使います、pyqueryもコラムとして登場します。
データの保存先としてデータベースへの保存も行います。RDBとしてMySQL、NoSQLとしてMongoDBを試します。
-
実用のためのメソッド
実際のWebサイトを対象に実装します。
スクレイピングする上で気をつけるべきことや、エラー発生時の確認方法・対応方法なども載っています。実装を行う上で検討すべき設計などもあるので、システム設計の導入に良いと思います。
-
クローリング・スクレイピングの実践とデータの活用
取得したデータの活用方法を学びます。自然言語処理をつかったり、為替のグラフを作成したりします。 RobobrowserやSeleniumを用いて、Webページの自動操作も行います。地図への描写やBigQueryなどもつかっており、幅広い利用方法を知ることができます。
-
フレームワーク Scrapy
スクレイピングフレームワークの「Scrapy」を利用してクローラーの効率的な開発を体験します。 フレームワークを用いることで高機能なシステムが効率的に作成できます。一通りの使い方やデバッグ方法などを知ることができます。Scrapyをつかってみたいという人にちょうどいいです。結構この章は詳しめに書いてあり、ボリュームも多めです。
取得したデータをElasticsearchをつかって検索できるようにします。OpenCVを用いた顔認識も行います。この章でも応用的な使い方が多数紹介されており、参考にしやすいです。
-
クローラーの継続的な運用・管理
運用する際のノウハウを学びます。
AWSでのリモート運用を行います。AWSの最低限の使い方も載っているので触ったことがない人でも確認できると思います。無料期間があるので実質お金をかけずに試せますが、アカウント作成にクレジットカードの情報が必要なので注意が必要です。
付録 Vagrantによる開発環境の構築
付録としてVagrantとVirtualBoxを用いて仮想環境の立ち上げ方が紹介されています。なくても試すことはできますが、使いこなせると後々便利です。他の開発でも役に立つと思います。Docker等利用したことがあればそちらのほうがいいかもしれません。
特長
コードがしっかり書かれており、コメントも豊富なのでわかりやすいです。プログラムにやらせたいことの定義と、行う処理をしっかり読みながら進めていくといいです。
応用の部分でのスクレイピングの活用が多く、おもしろいです。この本を読んで色々試しているうちに、あんなこともできそうだなとか、アイデアが湧いてくるかもしれません。
別で紹介している【実践技術書】PythonによるWebスクレイピングよりも、プログラムの設計や実装方法・プログラムそのものに関する内容が多いです。
実際のアプリケーションを作成しながらプログラムの実装の設計などを学ぶことができると思います。 スクレイピングはWebの知識や技術を学ぶ上でいい例題になるので、基礎を学んだ後の実践にうってつけだと思います。
おわりに
Webアプリ開発の入門としておすすめです。 Webを利用したシステムを考えるときに、なんだかんだ外部APIへのリクエストなど必要になると思います。ほかサイトへのスクレイピングなどもできると、ぐっとできることの幅も広がるのでおすすめです。
結構ボリュームのある本なのですが、紹介している応用の技術も盛り沢山なので、読んでいるだけで新しいアプリのアイデアとか思いつきそうです。引き出しを増やすためにも参考になる点の多い本です。