Sansan Tech Blog

Sansanのものづくりを支えるメンバーの技術やデザイン、プロダクトマネジメントの情報を発信

Webからのデータ収集の入門書としておすすめ「Pythonクローリング&スクレイピング[増補改訂版]」

こんにちは。 DSOC R&D グループの高橋寛治です。

つい先日に同僚の加藤が執筆した書籍「Pythonクローリング&スクレイピング[増補改訂版]―データ収集・解析のための実践開発ガイドー」の改訂版が発売されました。

gihyo.jp

私が業務でPythonを用いたクローリングおよびスクレイピングに取り組んでいることもあり、改訂版のレビューをさせていただきました。 実は、初版は読んで実践させていただいていたため、レビュー依頼を受けた際には感激しました(本当にお世話になっている本です)。

読んでいて私自身非常に勉強になった点が多く素直に良い本だと思ったため、本書籍の紹介をさせていただきます。

書籍の概要

Unix コマンドによるクローリングの基礎から始まり Python を用いた実践的なクローリング・スクレイピングなど様々なトピックに関して、豊富なサンプルコードとともに解説されています。 初版は2017年に発売されており、6回の増刷*1を重ねた書籍の増補改訂版です。

大見出しは、次の通りです。

  1. クローリング・スクレイピングとは何か
  2. Pythonではじめるクローリング・スクレイピング
  3. ライブラリによる高度なクローリング・スクレイピング
  4. 実用のためのメソッド
  5. クローリング・スクレイピングの実践とデータの活用
  6. フレームワーク Scrapy
  7. クローラーの継続的な運用・管理

それぞれの章の内容について簡単に紹介します。

1章では、Webの情報を巡回するクローラーといった背景知識から始まり、クローリングやスクレイピングといった用語の丁寧な説明がされます。 また、いきなりPythonでクローリング・スクレイピングに取り組むのではなく、Unixコマンドを用いた方法について紹介されています。 Unixコマンドはデータ取得・整形の基礎なので、力をつける上で素晴らしい項目だと思います。

2章では、 requests ライブラリを用いたWebページの取得や、 XPath、CSSセレクタによるスクレイピングの方法について説明されています。 実際にスクレイピングする際に、取得する要素の絞り方などスクリーンショット付きでわかりやすく記載されています。

3章では、Pythonでのスクレイピングの定番ライブラリである BeautifulSoup を用いた方法から、RSSのパース、MongoDBへの保存まで、2章よりも一歩踏み込んだ内容となっています。 データベースの設計や取り扱いは、大量にクローリング・スクレイピングを進める上で避けては通れない課題ですので、必読です。

4章では、実際にクローリング・スクレイピングしていく上で気にしないといけない点について丁寧に説明されています。 例えば robots.txt の話やキャッシュの話などです。 体系的に学ぶのは非常に難しい項目が見事にまとまっています。

5章では、形態素解析を用いてWebサイトの単語の頻度を解析したり、外部のWebAPIから情報を取得したり、Single Page Applicationのページを取得したりと、至れり尽くせりとなっています。

6章では、Pythonのクローリング・スクレイピングの重量級フレームワークである Scrapy の解説です。 Scrapyエンジンの概要や、実際にScrapyでクローリング・スクレイピングする際にどういったコードを書けば良いのかよくわかります。

7章では、実際のサーバー上で定期的にクローリング・スクレイピングする方法や設定について説明されています。 運用・管理のための基礎的な知識が整理されています。

おすすめの読者

初心者だけでなく一歩踏み込んだクローラを作りたい人や、体系的に知りたい人におすすめです。

初心者の観点から

データ収集したいと考えているが、用語すら知らないといういう人でも安心して読むことができます。 クローリング、スクレイピングといった用語の説明だけでなく、環境構築やサンプルコードが掲載されているため容易に実践できます。

そもそものUnixコマンドを触ったことがないという場合もあるかもしれません。 本書籍はコマンドを使ったクローリング・スクレイピングを丁寧に説明されているため、Unixコマンドに慣れることができます。

スクレイピングにおいてページ内でどこから情報を取得するかを知る際に、ブラウザツールを使うのですが、これに関して考え方とともにスクリーンショットで説明されているのも必読です。

この本を実践することで、自分が取得したい情報を取得できるようになるでしょう。

一歩踏み込むという観点から

ヘッドレスブラウザやフレームワークScrapy、また継続的にクロールするための知識が豊富に説明されています。 そのほかにもElasticsearchに投入して検索したり、OpenCVを使って顔画像を検出したり、面白いトピックがふんだんに組み込まれています。

クローリングやスクレイピングは難なくできるが、データストアの話や活用法で手が止まっている方におすすめです。

特に面白かった点

増補改訂版で増えた項目の一つである Pyppeter の項目です。 PyppeteerはヘッドレスChromeをPythonから取り扱うためのライブラリです。 私に抜け落ちていた知識の一つでした。

JavaScriptで描画するページのクローリング・スクレイピングは、いつもSelenium*2やrequests-html*3で行っていました。 所望の操作について一つのツールを覚えると、別の便利なツールを探したり試したりする機会が減りがちです。 Pyppeteerは認知していなかったツールだったので、使い方や設計思想を知ることができたのは非常に有益でした。

データ収集の入門書にぴったり

環境構築方法からサンプルコード、考え方まで体系的に記述されています。 本書を読み進めることで、よほど複雑なサイトではないかぎり自分が取得したいデータを取得・整形できるようになることでしょう。

Sansan Builders Boxの読者の皆様も、ぜひ本書籍を手に取ってみてください。

執筆者プロフィール

高橋寛治 Sansan株式会社 DSOC (Data Strategy & Operation Center) R&Dグループ研究員

阿南工業高等専門学校卒業後に、長岡技術科学大学に編入学。同大学大学院電気電子情報工学専攻修了。在学中は、自然言語処理の研究に取り組み、解析ツールの開発や機械翻訳に関連する研究を行う。大学院を卒業後、2017年にSansan株式会社に入社。現在はキーワード抽出など自然言語処理を生かした研究に取り組んでいる。

*1:技術書で増刷は本当にすごいと思います

*2:ブラウザ操作のデファクトスタンダード

*3:内部ではpyppeteerを使っている

© Sansan, Inc.