特定のwebサーバから定期的に情報を取得したいときがあります。
対象となるページがプレーンなページであれば良いのですが、
実際には認証等、色々な壁があるので、これを勉強がてら
1つ1つ解き明かして行きたいと思います。
perlのLWP(WWWアクセス用ライブラリモジュール)を使用します。
まずはIDフォームのnameが「id」、パスワードフォームのnameが「pass」として
以下のようなコードを書いてみました。
#!/usr/bin/perl use LWP::UserAgent; use HTTP::Request; use HTTP::Request::Common qw(POST); my $url = 'https://www.sample.com/login'; my %formdata = ('type' => 'login','id' => 'myid', 'pass' => 'mypass'); my $request = POST($url,[%formdata]); my $ua = LWP::UserAgent->new; $ua->agent('Mozilla/5.0'); my $res = $ua->request($request); :
肝心のログインを行う際のログインボタンがjavascriptになっており
どのようなリクエストを送ればいいかわかりませんでした…。
perlでどのようにjavascriptの関数をコールするかが肝になると
思いますが、時間がなくなってきたのでまた明日頑張ります。
まとめ。
- LWPを使用すると簡単にwebアクセスが実現可能。
- フォームデータは、name属性をキーに、入力する値をデータにしたハッシュにする
- POST(URL,上記ハッシュ)でPOSTリクエストを作成できる。
- javascriptの関数等をどうコールするかが課題