lwpの使い方は libwww-cookbok がperlとともにインストールされているはずなので、そちらを見た方がいいです。日本語訳は河馬屋2000年堂さんのページにあります。
大変詳しい説明なので、私の説明する余地はありませんが、おさらいとして、テストした結果です。
普通の使い方は、下のようになります。
use LWP::UserAgent;
$ua = LWP::UserAgent->new; $req = HTTP::Request->new(GET => 'http://www.foo.bar/');
# リクエストの送信
# 出力のチェック
|
headerにはより多くの情報を与えないと、サーバーが相手にしてくれない場合もあります。Acceptはダウンロードする物によって変更します。
ヘッダーのUser-Agentに与える文字列は $uaに対して指定します。
たとえばNetScapeでアクセスするときはこれだけのものをヘッダーに入れています。
ヘッダーの確認はローカルホストにAnHTTPdを入れて、ログを取って確認しました。
GET / HTTP/1.0
Connection: Keep-Alive User-Agent: Mozilla/4.7 [ja] (WinNT; I) Host: aaa.bbb.ccc.co.jp Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */* Accept-Encoding: gzip Accept-Language: ja Accept-Charset: Shift_JIS,*,utf-8 |
リクエストした結果は $resに帰ります。ここにはいろいろな情報が詰まっています。$res->contentにはサーバーが返すヘッダーも含まれています。コールバックを設定することもできますが、適当なところで切られたサーバーからの返答データーを引数にして呼び出されるので、プログラムを作るのは難しいです
CGIプログラムをアクセスする場合はGETよりもむしろPOSTを使う機会のほうが多いでしょう。UserAgentを使うこともできますが、フォーム内容のエンコードが面倒です。この場合は、LWP::Commonモジュールを使った方が楽です。
説明だけではつまらないので、実用になりそうなものも書いてみます。ヤフーの株価情報から時系列情報を連続ダウンロードします
これぐらいなら、wgetを使った方がよさそうな気もしますが、サンプルということで。
#!/usr/bin/perl
use LWP::UserAgent;
$baseurl = "http://chart.yahoo.co.jp/t"; y = 2001;
#
# リクエストの送信
# 出力のチェック
|