Pythonで簡単にクロール&スクレイピングができてしまうクローラー「Scrapy」

Pythonで作られた便利なクローラフレームワークを見つけたので、実際に使ってみた際の備忘録です。とても簡単にクローラーを作成できました。

Pythonで簡単にクロール&スクレイピングができてしまうクローラー「Scrapy」

簡単Pythonクローラーその名はScrapy

Scrapyとは、高レベルのスクレイピング技術とWebクローリングを提供しているフレームワークのこと。様々なWebページを収集して、そのページを解析する一連の動作が、ひとつのフレームワークに詰まっているという、データマイニングにはかかせないものとなっています!

実際にスクレイピーを導入してみた

pipが入っていれば、コマンド1つです(pip導入方法は別記事で)

これだけで、導入は終了

チュートリアルがまあそりゃー英語だったので日本語のメモ

http://doc.scrapy.org/en/latest/intro/tutorial.html

このチュートリアルの日本語メモをつらつらメモ。

全体的な流れとしては、

  • Scrapyプロジェクトの新規作成
  • 抽出するItemの定義
  • クロールするためのスパイダーと抽出するアイテムの設定
  • 抽出されたItemsを保存するためのItem Pipelineの設定

となっています。

Scrapyプロジェクトの新規作成

セットしたいフォルダにて以下のコマンドを叩きます。

今回はプロジェクト名をtutorialとしました。これにより、tutorialフォルダが作成され、以下のフォルダ構成となります。

各ファイルやディレクトリの説明

  • scrapy.cfg:プロジェクトのConfigファイル
  • tutorial/:プロジェクトのPythonモジュールで、ここからimportして使用する
  • tutorial/items.py:itemsのファイル
  • tutorial/pipelines.py:pipelineのファイル
  • tutorial/setting.py:settingのファイル
  • tutorial/spiders/:スパイダーを配置するディレクトリ

Itemの定義 何を抽出したいのか?

今回はTutorialに合わせて、dmoz.orgをクロールする場合で考えていきます。抽出するItemのデータタイプを定義するため、/tutorial/items.pyに以下のクラスを追加

Spiderの設定 どのように抽出するか?

続いてWebページをどのように抽出するかの設定を行います。Spiderクラスのサブクラスとして、以下の3つのメイン属性を定義する。

  • name:Spiderのユニークな名前をつける
  • start_urls:クロールを行う初期ページのURLを設定
  • parse:クロールを行った後の解析するための関数の定義

Tutorialの例として、以下のdmoz_spider.pyを/tutorial/spiders/の下に作成する。

HTMLをそのまま保存する例

以下のコマンドを叩き、実行する

HTMLをパースして指定した要素を抽出する例

以下のコマンドを叩き、実行する

最後にitemをスクレイプしたものをitemに渡す例

以下のコマンドを叩き、実行する

チュートリアルとしては以上です。次回以降、スクレイピングはどう設定するの?とかを実際にどこかのサイトを例にやっていきたいと思います。

データの出力

デフォルトではjsonファイル形式

setting.pyの設定

Spiderの作成

scrapyコマンドでspideerのテンプレートを作成する

参考サイト

Scrapy 1.1 documentation — Scrapy 1.1.2 documentation
PythonとかScrapyとか使ってクローリングやスクレイピングするノウハウを公開してみる! – orangain flavor
Scrapyをインストールしてバックグラウンドでスクレイピングするまで – TECH PRESS


もしよければ応援クリックお願いします
↓↓↓↓↓
にほんブログ村 IT技術ブログ IT技術メモへ