Webスクレイピングの本
Webスクレイピングの本といえば、「Rubyによるクローラー開発技法」が有名です。
今回は、先日発売された「PythonによるWebスクレイピング」を読みました。 Python本らしく、誰でも最短でやりたいことができるようになっています。
内容は、Webの情報を取得、蓄積、活用(組み合わせ)するというステップにそって、HTTPクライアントライブラリを使ったシンプルなプログラムから始めて、機能を追加しながらWebスクレイパーを作成します。
また、処理のコアとなる部分のコードは、エラー処理含めて載っていますし、実用的なコードを作る際に注意すべき点をアドバイスしていて、実践的な内容になっています。
説明は、必要にして十分といった感じです。分量的にも、200ページ程度で読みやすいので、Webを漁って断片的な情報を集めるより効率はよいと思います。
プログラミング初心者はもちろん、さっくりとこの分野を押さえたいエンジニアの方にもオススメできます。
Elixirで実装してみる
今回読んだ本を元に、ElixirでWebスクレイパーを実装してみたいと思います。
Elixirでスクレイパーを作る記事はすでにありますが、上記のWeb情報を活用するための手段としての、Webスクレイピングと捉えて、簡単なWebシステムを構築することを目指します。
Pythonの豊富なライブラリに対してどこまでElixirが実用的になっているかを検証するためにもよい題材と思います。
Webスクレイピングの基本要素
実装に入る前に、Webスクレイピングに必要な要素を見てみます。
HTTPクライアントや、HTMLパーサのほか、Web API関連とデータ保管もあげました。上記の本では、データ保管は、スクレイピングした情報を活用するためには不可欠とされていました。
実際に実用的なものを作ろうと考えると、これらがシームレスに連携しないと厳しいので、ここでもあげることにしました。
- HTTPクライアント
- HTMLパーサ(内部リンクと外部リンクの取得)
- API(認証、クライアントライブラリ、JSON)
- データ保管(DB、ファイル)
Elixirのライブラリ
上のそれぞれの要素を実現するライブラリです。有名なところだけでも2~3はライブラリがあるようです。
一通りは揃っているので、とりあえず基本的なシステムを構築するには問題ないと考えます。
- HTTPクライアント
- HTTPoison
- https://github.com/edgurgel/httpoison
- HTMLパーサ(内部リンクと外部リンクの取得)
- API(認証、クライアントライブラリ、JSON)
- Poison/elixir-json
- https://github.com/devinus/poison
- https://github.com/cblage/elixir-json
- oauth2
- https://github.com/scrogson/oauth2
- データ保管(DB、ファイル)
Elixirプロジェクトのセットアップ
まずはmixを使って、プロジェクトを作ります。
$ mix new prj
次に、mix.exsに設定を追加します。
この際、applicationに、:httpoisonを追加しておくと自動でstartしてくれます。
def application do
[applications: [:logger, :httpoison]]
end
defp deps do
[{:httpoison, "~> 0.8.0"}]
end
依存ライブラリをインストールします
$ mix deps.get
実際のソースコードは、libs以下に作成します。
main関数を作っておきます。
defmodule Prj do
def main([]) do
# codes
end
end
実行します
$ mix run -e "Prj.main([])"
コンパイルが開始し、Prj.main関数が実行されます。
プロジェクト周りは、このページがステップバイステップで解説していてわかりやすいのでオススメです。
では、次回から具体的な実装に入っていきたいと思います。
Written with StackEdit.