プログラマでありたい

おっさんになっても、プログラマでありつづけたい

Rubyによるクローラー開発技法の目次

 るびきちさんとの共著である「Rubyによるクローラー開発技法 巡回・解析機能の実装と21の運用例」が今週末(8/23,24)くらいから、本屋さんの店頭に並ぶようです。経緯や執筆スタイルなどは別途まとめたいと思いますが、ようやくここまで辿り着けたというところです。

 AmazonとSBクリエイティブさんのページを見ても、8/21現在では詳細の目次が無いようです。手元にあったデータを貼り付けておきますので、参考にしていただければと思います。


Rubyによるクローラー開発技法 目次


Chapter 1 10分クローラーの作成
 1-1 イントロダクション 2
  1-1-1 クローラーとは 2
  1-1-2 Rubyとは 2
 1-2 クローラー 「GNU Wget」3
  1-2-1 Wgetとは 3
  1-2-2 インストール 4
  1-2-3 Wget の簡単な使い方 7
  1-2-4 クローラーとしての Wget 8
 1-3 クローラーを作るにあたってのRubyの基礎 12
  1-3-1 Rubyの特性 12
  1-3-2 文字列処理 16
  1-3-3 正規表現 19
  1-3-4 ファイルを開く 23
 1-4 Rubyでテストサーバを立てる 25
  1-4-1 標準ライブラリ「WEBrick」でお手軽httpd 25
  1-4-2 URLから規則的な内容のページを表示する 26
  1-4-3 Wgetのオプションを検証する 30
 1-5 超簡単! 10分で作るクローラー 34
  1-5-1 概略 34
  1-5-2 HTMLを解析する 35
  1-5-3 Wget を Ruby から呼ぶ 39
  1-5-4 最新記事をテキストで出力する 40
 1-6 クローラーを拡張する 42
  1-6-1 open-uriに対応させる 42
  1-6-2 RSS2.0 での出力に対応させる 43
  1-6-3 リファクタリング 47
  1-6-4 RSS サーバにする 51

Chapter 2 クローラー作成の基礎
 2-1 クローラーの目的と構造56
  2-1-1 クローラーの目的 56
  2-1-2 クローラーの構造 56
  2-1-3 クローラーが利用するライブラリ 60
  2-1-4 Ruby 製のクローラー 62
 2-2 Anemoneを利用する 66
  2-2-1 Anemoneの機能 67
  2-2-2 Anemoneの内部構造 71
  2-2-3 Anemoneの実行モデル 72
 2-3 Anemoneのインストール(Windows編) 74
  2-3-1 Nokogiriのインストール 74
  2-3-2 Anemone のインストール 75
  2-3-3 コンパイルツールを利用してビルドする場合 76
 2-4 Anemoneのインストール(Mac編) 78
  2-4-1 libxmlとlibxslt、libiconvのインストール 78
  2-4-2 Anemone のインストール 80
 2-5 基本的なクローラーを作成する 81
  2-5-1 Amazonからジャンルごとのベストセラーを取得する 81
  2-5-2 クローリング機能の作成 86 2-5-3 スクレイピング機能の作成 91
  2-5-3 RSS を利用する方法 98
 2-6 クローリングができない場合の対処法101
 2-6-1 クローリングができない原因 102
 2-6-2 プロキシサーバ 102
 2-6-3 サイト側にアクセス拒否されるケース104
 2-7 行儀のよいクローラーを作るには109
 2-7-1 robots.txt 110
 2-7-2 サイトの利用規約 112
 2-7-3 取得したデータの取り扱いと著作権 113
 2-7-4 Web サイトのリソース圧迫と業務妨害 113
 2-7-5 クローラーと API 114
 2-8 ブラウザタイプのクローラー114
 2-8-1 画面テストツール 115
 2-8-2 ブラウザタイプのクローラー作成の準備116
 2-8-3 ログインが必要なページの対処 124
 2-8-4 JavaScriptを多用しているページの対処134
 2-8-5 足りない機能を補完する138

Chapter 3 収集したデータを分析する
 3-1 収集したデータを分析する148
 3-1-1 正規表現と構文解析 148
 3-1-2 日本語の文字コードと日本語処理 149
 3-2 HTML解析と正規表現149
 3-2-1 Ruby における正規表現の実装150
 3-2-2 正規表現のオプション154
 3-2-3 正規表現のパターン 155
 3-3 文字コードの対処法156
 3-3-1 Ruby における文字コードの取り扱い 156
 3-3-2 Nokogiriと文字コード 160
 3-3-3 Anemone と文字コード 161
 3-4 RSSの解析163
 3-4-1 名前空間(Namespace)164
 3-4-2 RSS 1.0 164
 3-4-3 RSS 2.0 166
 3-4-4 Atom 1.0167
 3-4-5 RSSAtom の解析168
 3-5 HTMLの解析172
 3-5-1 Nokogiriのクラス構造 172
 3-5-2 Nokogiri、XPath の使い方 172
 3-5-3 中心的な 3 つのクラス 175
 3-5-4 簡単な XPath の抽出方法183
 3-6 自然言語を使った日本語の処理187
 3-6-1 形態素解析と特徴語抽出187
 3-6-2 日本語処理 188

Chapter 4 高度な利用方法
 4-1 データの保存方法198
  4-1-1 データストレージ 198
  4-1-2 ファイルに保存 198
  4-1-3 データベースとの連携200
  4-1-4 SQLite3に保存 201 4-1-5 MongoDB に保存 206
  4-1-5 MySQL に保存213
 4-2 クローラーの開発とデバッグ方法 219
  4-2-1 Ruby プログラムのデバッグ方法 219
  4-2-2 開発プロキシを使ったクローラーの開発224
 4-3 クローリングとスクレイピングの分離228
  4-3-1 スクレイピング部分の分離 228
  4-3-2 分離度を上げる 229
 4-4 クローラーを効率的に動かすには232
  4-4-1 多重度を上げる 232
  4-4-2 タイムアウトの調整 236
  4-4-3 HTTP Compressionによる通信データの圧縮237
  4-4-4 未取得のデータのみ取得する 238
  4-4-5 エラーコードに対する処理 238
 4-5 Anemoneのオプション一覧240
  4-5-1 Anemone のオプション 240
  4-5-2 ストレージオプション(storage)240
  4-5-3 クローリング間隔オプション(delay)241
  4-5-4 巡回戦略オプション(skip_query_strings)241
  4-5-5 探索戦略オプション(depth_limit)241
 4-6 APIを利用した収集242
  4-6-1 API を利用するメリット242
  4-6-2 Amazon Product Advertising API243

Chapter 5 目的別クローラーの作成
 5-1 Google の検索結果を取得する248
  5-1-1 Google の検索結果のスクレイピング 248
  5-1-2 Gem を利用する 250
  5-1-3 Google Custom Search API を利用する 251
 5-2 ブログへのクローリング 256
  5-2-1 個別ブログの記事取得256
  5-2-2 本文抽出260
 5-3 Amazonのデータを取得する263
  5-3-1 商品 ID「ASIN」263
  5-3-2 商品 ID の取得 263
  5-3-3 商品データの取得 265
  5-3-4 新着ランキングセール 266
 5-4 Twitter のデータ収集 267
  5-4-1 HTML からのクローリング 267
  5-4-2 Twitter の API272
  5-4-3 Twitter REST API 272
  5-4-4 Twitter Streaming API277
 5-5 Facebookへのクローリング278
  5-5-1 Facebook Graph APIとFQL278
  5-5-2 認証が必要ないFacebook Graph API 279
  5-5-3 認証が必要な Facebook Graph API 280
 5-6 画像を収集する285
  5-6-1 Flickr からクローリングで収集する 285
  5-6-2 Flickr API 287
 5-7 YouTube から動画を収集する 290
  5-7-1 動画の URL を収集する 290
  5-7-2 動画をダウンロードする291
 5-8 iTunes Store の順位を取得する 293
  5-8-1 iTunes Storeのランキング293
  5-8-2 カテゴリ ID とランキング種別 296
  5-8-3 iTunes アプリのランキングを取得する 297
 5-9 Google Playの順位を取得する299
  5-9-1 Google Playのランキング299
  5-9-2 Google Playのクローラーライブラリ 301
  5-9-3 カテゴリ ID とランキング種別 302
 5-10 SEOに役立てる304
  5-10-1 検索順位を収集する 304
  5-10-2 被リンク 305
 5-11 Wikipediaのデータを活用する308
  5-11-1 Wikipedia からのクローリングとデータ 308
  5-11-2 Wikipedia のカテゴリの活用 309
 5-12 キーワードを収集する311
  5-12-1 Wikipedia のタイトル 311
  5-12-2 はてなキーワード311
  5-12-3 Google Suggest API 313
 5-13 流行をキャッチする314
  5-13-1 瞬間的なトレンドをキャッチする314
  5-13-2 長期的なトレンドをキャッチする319
 5-14 企業株価情報を収集する321
  5-14-1 証券コード一覧を取得する 321
  5-14-2 企業情報および当日の株価を収集する 322
  5-14-3 株価の時系列データを収集する325
 5-15 為替情報金融指標を収集する327
  5-15-1 国債金利 327
  5-15-2 為替情報 331
  5-15-3 その他の経済指標332
 5-16 郵便番号と緯度経度情報を取得する333
  5-16-1 Google Maps APIによるジオコーディング333
  5-16-2 郵便番号から緯度珪素の検索334
  5-16-3 郵便番号と経度緯度データによる可視化 335
 5-17 新刊情報を収集する336
  5-17-1 Amazonの新刊予約の検索パラメータ 336
  5-17-2 新刊情報を取得する 338
  5-17-3 APIを利用する 340
 5-18 荷物を追跡する342
  5-18-1 ヤマト運輸の荷物を追跡する 342
  5-18-2 Google Calendar に登録する 3434
 5-19 不動産情報を取得する346
  5-19-1 レインズからのデータ取得 346
 5-20 官公庁のオープンデータを活用する349
  5-20-1 提供されているデータ一覧 350
  5-20-2 次世代統計利用システムのAPI登録 351
  5-20-3 次世代統計利用システムの API の利用352
 5-21 新聞の見出しを集める355
  5-21-1 取得対象とプログラムの構造 355
  5-21-2 親クラスの実装355
  5-21-3 各社別の記事URL の抜き出し 356
  5-21-4 呼び出し元の実装357
  5-21-5 ページング機能の追加 358

Chapter 6 クローラーの運用
 6-1 サーバサイドで動かす362
  6-1-1 サーバで動かすメリット362
  6-1-2 サーバへのインストール363
  6-1-3 Linuxのコマンド 372
 6-2 定期的にデータを収集する375
  6-2-1 Crond でスケジューリングを登録する375
  6-2-2 Crond で動かす際の注意点 377
  6-2-3 差分を検知する 378
  6-2-4 時系列で表示する 380
 6-3 収集結果をメールで自動送信する384
  6-3-1 どういった内容を送るのか 384
  6-3-2 Gmail を使って結果通知する385
  6-3-3 Amazon Simple Email Service(SES)を使って結果通知する390
 6-4 クラウドを活用する396
  6-4-1 AWS のサービス 396
  6-4-2 クラウド上のサーバを利用する 398
  6-4-3 クラウド上のストレージを利用する 402
  6-4-4 Amazon SNS で通知する 407
 6-5 さらなる高速化の手法410
  6-5-1 非同期処理 410
  6-5-2 分散処理415
 6-6 変化に対応する419
  6-6-1 検知方法419
  6-6-2 修正&再処理 422
 6-7 クローラーとそれに付随する技術424
  6-7-1 データを活用する方法425
  6-7-2 データの可視化 425
  6-7-3 データマイニング 426

See Also:
『Rubyによるクローラー開発技法』を書きました

参照:
新刊『Rubyによるクローラー開発技法』2014/08/25発売! | るびきち×Emacs
SBクリエイティブ:Rubyによるクローラー開発技法

Rubyによるクローラー開発技法 巡回・解析機能の実装と21の運用例

Rubyによるクローラー開発技法 巡回・解析機能の実装と21の運用例