やーまんぶろぐ

気が向いた時にだけ書くブログ

Pythonクローリング&スクレイピング -データ収集・解析のための実践開発ガイド- メモ

クローリング&スクレイピングに興味があったので読んでみました。
サンプルページも多く、非常に参考になりました。

クローリング・スクレイピングとは何か

まずは説明。

  • クローリング
    • Webページのハイパーリンクをたどって次々にWebページをダウンロードする作業
  • スクレイピング
    • ダウンロードしたWebページから必要な情報を抜き出す作業

Pythonではじめるクローリング・スクレイピング

Webページを取得する、正規表現で情報を抜き出す、データベースに保存する、という3つの処理を行います。

ここではゴリゴリに実装しています。

強力なライブラリ

ライブラリのメモ。

データベースへの保存についても書かれています。

実用のためのメソッド

ここではよい設計について書かれています。
キャッシュを使って更新されたデータだけを取得する方法、クロール先が変化した場合のメール通知などが書かれています。

クローリング・スクレイピングの実践とデータの活用

ここではAPIに対応しているサービスの情報取得について書かれています。
APIで取得するとスクレイピングが不要になるので、けっきょくこれが一番実用的だと思いました。

他にもデータ可視化についても書かれています。

フレームワーク Scrapy

Webサイトのクローリング・スクレイピングをするなら、以下のことができるScrapyというフレームワークを使うのがよいみたいです。

  • Webページからのリンクの抽出
  • robots.txtの取得と拒否されているページのクロール防止
  • XMLサイトマップの取得とリンクの抽出
  • ドメインごと / IPアドレスごとのクロール時間間隔の調整
  • 複数のクロール先の平行処理
  • 重複するURLのクロール防止
  • エラー時の回数制限付きのリトライ
  • クローラーのデーモン化とジョブの管理

Elasticsearchによる全文検索についても書かれていました。

クローラーの継続的な運用・管理

AWSでの運用・管理方法が書かれています。EC2上のcronで動かすくらいなら、PythonだしLambdaでいいんじゃないかと思いました。

メールによる通知をSESもあるのでクラウド化できそうですね。

クラウド活用としては画像の保存先としてS3が紹介されていました。

Vagrantによる開発環境の構築

一般的なVagrantの話。