エンジニアステップ

初心者エンジニア(1年目~3年目くらい)のための技術ブログ

「Pythonクローリング&スクレイピング ―データ収集・解析のための実践開発ガイド」の感想

Pythonクローリング&スクレイピング ―データ収集・解析のための実践開発ガイド」の感想です。

自分で、ウェブ上のデータを拾って、コンテンツとしてまとめたいという気持ちから、興味を持ちました。

 

 

Pythonクローリング&スクレイピングの概要

Pythonクローリング&スクレイピングの概要は以下の通り。

Pythonによるクローリング・スクレイピングの入門から実践までを解説した書籍です。基本的なクローリングやAPIを活用したデータ収集,HTMLやXMLの解析から,データ取得後の分析や機械学習前の処理まで解説。データの収集・解析,活用がしっかりと基本から学べます。Webサービスの開発やデータサイエンスや機械学習分野で実用したい人はもちろん,基礎から解説しているのでPython初心者でもつまずかずに学習できます。多数のライブラリ,強力なフレームワークを活用して高効率に開発できます。

 

目次

目次を載せておきます。

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

 

オススメな人

オススメな人は公式によると以下の人

  • 業務や学術研究でクローラーを作りたい人
  • Pythonの一歩先の活用方法に興味のある人

 

最低限、python自体の話も10~20ページほどありますが、基本的には、

  • プログラミングはある程度できる(入門書レベルは問題ない)人
  • pythonをいきなり触っても問題ない人
  • ライブラリとか、DBの利用方法が分かる人

に向けて書かれています。

※プログラミング初心者向きではないということ

 

そんな前提条件をクリアした中で、

  • クローリングを試してみたい
  • スクレイピングを試してみたい
  • 実用的な形で運用してみたい

というニーズ答える本になっています。

周辺知識(NoSQLへの保存とか)まで扱っていて、400ページにかなり濃い情報が詰まっています。

 

 

Pythonクローリング&スクレイピング各章のメモ

各章のメモです。

第1章まとめ

クローリングとはクローラーを使ってデータを収集することです。

Webクローラーは「スパイダー」「ボット」などと呼ばれる、ウェブページ上の情報を取得するプログラム。

Googleなどの検索エンジンもここに含まれる。

 

一方で、混同されがちですが「スクレイピング」はWebページから必要な情報を抜き出す作業です。

 

第1章では、そんな2つの動作をコマンドラインから実行しています。

具体的には

  • Unixコマンドの「wget」でクローリング
  • Unixコマンドの「grep, sed(awk)」等でスクレイピング

を行っています。

 

この章は、こうすれば出来るよー、という提示と、用語の説明などをしているだけなので、特に自分で試さなくても良いと思います。

 

第2章まとめ

第2章では、クローリング・スクレイピングにPythonを使うべき理由が述べられています。

サードパーティーのスクレピングライブラリが優秀である点、またスクレイピング後の処理(分析)も強い点が主な理由です。

 

クローリングに関しては、取得したHTTPレスポンスのヘッダーからエンコーディングを見て、どれでデコードするかを判断する、という話が最初に載っています。

 

スクレイピングに関しては以下の2つの手法があげられています

  • 正規表現
  • XMLパーサー

XMLパーサーでHTML文書をパースするのは現実的にはできないので注意(閉じタグがなかったり、文法が不正確だったりする)。

逆に言うと、レンダーは賢いということですね。

 

ちなみにr'...'というraw文字列(そのまま扱う=生物として扱う)を使うと正規表現は便利です。

※バックスラッシュがエスケープ文字として解釈されないので

 

2章の最後では、クローリングしたデータをどのように保存するかという方法が3種類示されています

  1. CSV形式(TSV形式)で保存
  2. JSON形式で保存
  3. DBへ保存

 

ちなみに、標準ではSQLiteへの保存が可能です。

サーバとしてではなくアプリケーションに組み込んで利用される軽量のRDBですが、ファイルへの書き込みが遅い(ボトルネックになる)という問題があります。

 

Pythonのライブラリ簡単まとめ(第1章、第2章)

本書で紹介されたPythonのライブラリをいくつか簡単にまとめました。

クローリング用

  • urllib:Webページを手軽に取得。HTTPヘッダカスタマイズ、Basic認証など複雑な処理には向いていない
  • http.client:低水準なHTTP通信のAPIを提供するモジュール(人間が使うのには向いていない)

 

スクレイピング用

  • html.parser:標準モジュール。クラス定義、タグに応じた処理が必要なので面倒くさい。サードパーティーを使ったほうが良い
  • re:正規表現使える。この時、match関数ではなくsearch関数をよく使う
  • xml.etree.ElementTree:XMLパースするのに便利。標準ライブラリ。

 

 

長くなってきたので、第3章以降は別記事で書きます。