Webからデータを集めるというテーマで、「データを集める技術」という本を書きました。中身は、クローラー/スクレイピング本なのですが、それだと内容が「Rubyによるクローラー開発技法」と丸かぶりになってしまうので、本職プログラマでない人でも読めるような内容を目指して書いています。
- 作者: 佐々木拓郎
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2016/11/29
- メディア: 単行本
- この商品を含むブログを見る
Excelでデータ収集をする理由
メインのターゲットは、ITエンジニアです。ただし前述のとおり、プログラマでない人でも何とかなるように目指しています。ということで、メインのデータ収集環境は、ExcelとGoogleスプレッドシートです。何故、Excelを選んだかというと、技術書で10万冊売れるのはExcelだけだから。環境構築の負荷が極小で、かつ普及しているプラットフォームだからです。我々エンジニアからすると、プログラムを実行する環境を構築することは難しくありません。しかし、一般的にはここのハードルは非常に高いのです。そこをどうやって回避するか考えた結果、Excelを選びました。
Excelはデータ収集のための実行環境として考えると、何気に優れています。少し設定をするだけでVBAというプログラム言語を利用できます。VBAからIEをコントロールできるので、ブラウザのエミュレートをどうするかという問題も不要です。また集めたデータをシートに保存することも可能ですし、グラフや表にまとめて可視化することも出来ます。使える言語がVBScriptのみということに目をつぶれば、中々に優れた環境です。
Google スプレッドシートも同様の理由で選んでいます。Windows以外という選択肢も増えている中で、Excelの代替となる可能性のあるものの第一候補はGoogle スプレッドシートだと思います。Google スプレッドシートも、JavaScriptベースのGoogle Apps Scriptを使うことで、自由自在にデータ収集ができます。また、スケジュール実行やイベント駆動も出来るので、スクレイピングという枠に留まらず簡易Botの基盤としても有用なのではないでしょうか。冒頭ではExcelを連呼していましたが、実はExcelよりGoogleスプレッドシートの比重が高いです。
データ収集の方針
私の人生のモットーは、できるだけ楽をしたいです。ということで、データを集めるにしろ出来るだけ楽をしようと考えながら構成しています。具体的にいうと、プログラムをしなくても既にデータをとれる為の手段があるのであれば、それを使う。自分で頑張る必要がある場合でも、ExcelやGoogleスプレッドシートのセル関数だけで済むものがあれば、それだけで完結される。万策尽きた場合のみ、プログラムするという方針です。
楽をするために、いろいろなサードパーティ製のサービスを使っています。スクレイピングサービスであるImport.ioや、単なる通知ツールにとどまらないIFTTTやmyThings、連携ツールとしてのSlackなどです。
リアルタイム通知
本書で重視しているのが、データを発見したときのリアルタイム通知です。データを集める目的として、大量のデータを効率的に集めたいというのと、欲しい情報がWeb上にあがったら即座に知りたいというのがあります。前作については前者を重視していましたが、本作については後者となっています。
理由としては、そういったニーズがかなりありそうだということです。前作のRubyによるクローラー開発技法についても、エンジニア以外の人でも読んでいますという声をだいぶ頂きました。データを集める目的を聞いてみると、マーケティングや広報・企画といったところで、事前調査や反響を知りたいという目的が多かったです。そういった用途の場合、データを集積するということも大事ですが、なるべく早く知りたいという要求も高くなります。その辺りを考えて、モバイルへのリアルタイム通知については多くのページを割いています。
※本を何冊か書いているうちに、エゴサーチの鬼になったので、そのあたりのニーズがよく解るようになったという事情もあります。
まとめ
上記のような方針で書いているので、今まで書いてきた本と読者層がだいぶ違うようになります。正直なところ、想定している読者層にちゃんと届くのか、またどんな評価になるのか非常にドキドキしています。わりと配本も多いので、少し大きめの本屋であれば置かれるのではないかなと思うので、本屋で見つけたら是非ペラペラとめくってみてください。
目次は、こんな感じです。
Chapter1 スクレイピングとクローラーで効率的にデータを集めていく
1-1 データはWeb上に集まる
Web上に存在するデータの種類
本書が対象とするデータ
1-2 効率的にデータを収集するために行うこと
データ収集の3つのステップ
1-3 どうすれば自動化できるのか?
スクレイピングとクローラー
半自動化プログラムでできること
完全自動化プログラムでできること
本書の進め方
1-4 Webサイトからデータを集める際の注意事項
収集したデータの取り扱いと著作権
Webサイトのリソース圧迫と業務妨害
クローラーとAPIChapter2 Excelとブラウザを連携してWebページからデータを収集する
2-1 Excel VBAでWebからデータを収集する
Excelでのデータ収集テクニック
ExcelでVBAが使えるようにする設定
データを収集するためのプログラム
2-2 VBAでIEを操作する仕組み
宣言部分
VBAの関数の宣言
IEの操作
2-3 取得したHTMLから要素を抽出する仕組み
HTMLの構造
HTMLから要素を抜き出すプログラム
2-4 簡単な方法で要素を特定する
ChromeでXPathを抽出する方法
FirefoxでXPathの抽出する方法
2-5 WEBSERVICE関数とFILTERXML関数によるデータ収集
WEBSERVICE関数によるデータ収集
FILTERXML関数によるデータ収集Chapter3 Googleスプレッドシートを利用して自動的にデータを収集する
3-1 GoogleスプレッドシートとGoogle Apps Scriptを準備する
Googleスプレッドシートとは
Google Apps Scriptとは
関数とクラス
3-2 ImportXML関数を使ってWebからデータを収集する
ImportXML関数の概要
株価データの取得方法
セルの値を利用した取得方法
3-3 Google Apps Scriptを利用してデータを収集する
Google Apps Scriptの使い方
Google Apps Scriptによるスクレイピング
Google Apps Scriptの実行
3-4 指定した時間に定期的にデータを収集する
Google Apps Scriptのトリガー
トリガーの設定方法
Chapter4 スクレイピング専用サービスを利用して手軽にWebからデータを収集する
4-1 import.ioを利用してWebからデータを収集する
import.ioのサービス概要
import.ioの利用方法
4-2 import.ioでスクレイピングを実行する
import.ioへのサインアップ
データの自動抽出
抽出したデータの取得方法
取得する要素の任意指定
APIを使ったデータ抽出
4-3 収集したデータをシート上に保存する
Googleスプレッドシートとの連携
Google Apps Scriptとの連携
Excelとの連携
Chapter5アプリケーションを利用してTwitterからデータを収集する
5-1 アプリを利用して収集した結果を通知する
通知を受け取るためのアプリケーション
IFTTTの概要
Slackの概要
myThingsの概要
5-2 IFTTTを使ってTwitter上でエゴサーチを行う
IFTTTの会員登録
モバイルアプリのインストール
Twitter検索のレシピ作成
5-3 Slackを利用して定期的にRSS情報を収集する
Slackの会員登録
RSSフィードの収集
モバイルアプリからの利用
5-4 myThingsを使ってTwitter上でエゴサーチを行う
会員登録とモバイルアプリのインストール
Twitter検索の組み合わせの作成
Chapter6 ターゲットを絞り込んで、さまざまなデータを自在に収集する
6-1 会社・商品に関する情報を収集する
特定のキーワードを収集する目的
収集・保存・通知方法
6-2 Webから特定の「キーワード」に関する情報を収集・蓄積する
Googleアラートの設定
IFTTTの設定
結果の確認
6-3 Twitterから特定の「キーワード」を含むツイートを収集・蓄積する
IFTTTの設定
結果の確認
6-4 App StoreからiOSアプリのランキングを収集する
ランキングのRSSフィード
ランキングの収集
結果を日付別シートに保存
指定した時間に毎日実行する
6-5 Google PlayからAndroidアプリのランキングを取得する
import.ioを使ったデータ収集
結果をGoogleスプレッドシートに保存
日本語ランキングの取得
6-6 Amazonのカスタマーレビューを収集する
import.ioを利用した収集方法
Googleスプレッドシート+ImportXMLによる収集方法
Google Apps Scriptを利用した収集方法
6-7 上場企業の時価総額を収集する
銘柄コード一覧の取得
株価に関する情報の収集
時系列で株価データを収集
6-8 Amazonのセール情報を取得する
Amazonのほしい物リスト
ほしい物リストから商品を取得(Excel版)
ほしい物リストから商品を取得する(Google Apps Script版)
Amazonの割引率が高い商品を探す
商品の割引率とポイント還元率の取得(Excel版)
商品の割引率とポイント還元率の取得(Google Apps Script版)
Chapter7 データを収集した後の見せ方と使い方のヒント
7-1 クローラー/スクレイピング開発と関連技術
認証が必要なページからのデータ収集
大規模なデータ収集
スクレイピング/クローラー基盤の将来のアーキテクチャ
7-2 データを可視化して理解しやすくする
表とグラフ
Google My Mapsを利用した地図データとの組み合わせ
その他の地図データの活用
7-3 集めたデータを組み合わせて分析する
分析手法
機械学習サービス「Amazon Machine Learning」
- 作者: 佐々木拓郎
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2016/11/29
- メディア: 単行本
- この商品を含むブログを見る