Web スクレイパー必携の一冊、ふたたび - 『増補改訂版 Python クローリング & スクレイピング』

Takahiro Ikeuchi
6 min readAug 8, 2019

--

この度縁あって『増補改訂版 Python クローリング & スクレイピング, 加藤耕太 著, 2019年, 技術評論社』(以下、本書)を技術評論社よりご恵贈賜りました。

1万部を超える人気書籍となった『Python クローリング & スクレイピング』

“増補改訂版” と銘打つとおり、本書は 2016年12月に発売された書籍の改訂版(以下、第一版)にあたります。じつは第一版刊行のさいにもレビューを書かせていただいておりました。

本書「増補改訂版に寄せて」によると、”短い期間で6回の増刷を重ね、累計発行部数は1万部を超え” たとのことで、今回の改訂版刊行はその実績をうけての刊行であることがうかがい知れます。

本書が扱うのは、Web スクレイピング・クローリングと呼ばれる技術です。本書はまず技術そのものの解説を行ってから、「Webスクレイピングを Python で実現するには」という手法の解説に取り組みます。全体の流れや各章ごとのトピックについては、拙著で恐縮ですが上述の第一版のレビュー記事をご覧下さい。

気になる増補トピック

さて、ここからは僕が気になった増補トピックをいくつか紹介します。いくつかをピックアップしたもので、ここにあげたものが差分の全てではないことにご留意ください。

Pyppeteer

本書では Single Page Application など、JavaScript 主体の Webサイトをスクレイピングするためのツールとしてお馴染みの Selenium を扱いますが、あらたに Pyppeteer の解説が追加されています(5章 6節)。

Pyppeteer は Puppeteer の Python版で、操作対象ブラウザを Chrome に限定し、非同期処理を前提としたつくりになっているそうです。

第一版から本書まで、PhantomJS の開発が終了したりGoogle Chrome のヘッドレスモードが stable になったり と色々ありましたね…。本書では最新のツール動向にあわせた内容に調整されています。

Elasticsearch

増補版では、全文検索システム Elasticsearch の紹介が追加されています。

Webスクレイピングのためのフレームワーク Scrapy を使って収集・蓄積したデータの活用例として、Elasticsearch を使った文書検索の例が紹介されています。本書で扱う範囲は限定的ですが、興味を惹かれた読者は Elasticsearch や全文検索エンジン、自然言語処理といった分野を深掘りすると良いでしょう。

PyQS (メッセージキューの利用)

本書 第7章「クローラーの継続的な運用・管理」では、クローリングとスクレイピングの工程を疎結合にするためにメッセージキューの導入が提案されます。増補版では、Amazon Web Service の Amazon Simple Queue Service (SQS) を利用することを前提として、PyQS を活用するという解説にブラッシュアップされました。

asyncio の活用(3.7版)

本書 第7章 では、asyncio を利用して非同期I/O を容易に実現し、クローリング効率を高める方法が解説されます。

asyncio のトピック自体は第一版でも取り扱われていました。第一版は Python 3.5 を対象としたコードが、本書では Python 3.7 対象に更新されています。具体的には、Python 3.7 で追加された asyncio.run() を利用しています。細かい点ですが、よりシンプルに書ける方法を採用するという Pythonic (?) な思想が垣間見えました。

こんな方におすすめ

本書は、Python を使った Webクローリング・スクレイピングについて体系的に学ぶために最適な一冊です。特に以下の方におすすめできます。

  • Webスクレイピングやクローラーについて基礎から応用までしっかり学びたい方
  • Python + Beautiful Soup を使ったWebスクレイピングを身につけ、次に何を学べばよいか知りたい方
  • 趣味でクローラーを開発したことがあるけど、仕事でも必要になった・なるかも知れない方

以上です。増補改訂版の刊行を謹んでお慶び申しあげます!

--

--

Takahiro Ikeuchi

株式会社Hakali 取締役CTO。株式会社ALBERT 執行役員を経て2015年8月に起業。2019年6月より現職。 Go や React による アプリケーション開発のほか、Webデザインなどを広く手がける。著書に「PythonユーザのためのJupyter[実践]入門」などがある。