スクレイピングしたデータは、見やすい形にしておくのがいいと思います。
場合によると思いますが、ブラウザで見られるようにしてあると便利な場合があります。
そこで、perlでWebアプリを作成します。
ただ、スクレイピングデータを見るためにだけのWebアプリですので、手軽に作りたいです。
そこで、簡単なWebアプリフレームワークとperl製のWebサーバを使うことにします。
Webアプリフレームワークは「Mojolicious::Lite」を、
Webサーバは「Starman」を使います。
2つともCPANモジュールなので、cpanmなどでインストールできます。
Mojolicious::Liteでは、次のように一つのファイル内でWebアプリのプログラムを書く事ができます。
#!/usr/bin/env perl use strict; use warnings; use Mojolicious::Lite; get '/' => sub { my $self = shift; $self->render( items => ['item1', 'item2'] ); } => 'index'; get '/test/:item' => sub { my $self = shift; my $item = $self->stash('item'); $self->render_text($item); } => 'test'; app->start($ARGV[0] ? $ARGV[0] : 'psgi'); __DATA__ @@ index.html.ep <html> <head><title>test</title></head> <body> <ul> % for my $item (@$items) { <li><a href="<%= url_for('test', item => $item) %>"><%= $item %></a></li> % } </ul> </body> </html>
ちょっとしたスクリプト感覚でWebアプリが作れてしまいます。
テストで動かす場合は「perl app.pl daemon」で起動、
「http://localhost:3000/」でアクセスできます。
このWebアプリをStarmanで運用します。
起動コマンドは次のようにしました。
starman -a mojo.pl -port 5000 --workers 1 -D --pid pid.txt
上記のコマンドでは下記のオプションを使っています。
- -a
- Webアプリの実行ファイルを指定します。「mojo.pl」はMojolicious::Liteで作成したスクリプトです
- -port
- ポート番号を指定しています。複数のアプリを動かすときは、それぞれポート番号を変えていきます
- -workers
- ワーカー数を指定してます。自分だけ使うことを想定していますので「1」に設定しました
- -D
- デーモン化してバックグラウンドで動作させます
- --pid
- pidの出力先ファイルを指定してます。デーモン化したプロセスを停止・再起動する場合はpid.txtに書かれたpidを使います
これであとはスクレイピングしたデータを表示する処理を書くだけです。
cpanで環境が揃うのがいいなぁと思いました。
Mojolicious::Liteについては、下記のページが参考になりました。