URLに規則性がある場合
対象とするサイトのURLを見てみると規則性がある場合があります。
例えば、なにかを一覧しているページでは、URLに「page=002」といったパラメータが付いている場合があります。
この一覧ページはページングされていて、「page=002」は2ページ目を表示していることを表しています。
ですので、「page=003」「page=004」と続いていくことが予想できます。
このときにpageの値をperlで作って、順次アクセスしていく事を考えます。
URLを操作する時に便利なものが「URIモジュール」です。
このモジュールを使用すると次のようになります。
#!/usr/bin/env perl use strict; use warnings; use LWP::Simple; use URI; my $uri = URI->new('http://hogehoge.com/list'); for my $page (1..10) { $uri->query_form( page => sprintf("%03d", $page ) ); print $uri->as_string, "\n"; my $content = get($uri->as_string); }
「$uri->query_form( page => sprintf("%03d", $page) );」のようにパラメータの値を指定すると、
「http://hogehoge.com/list?page=001」のようにURLを作成してくれます。
pageの値はforループで順次インクリメントしていって作成しています。
WebAPIにアクセスする場合
WebAPIにアクセスする場合にもURL操作が必要になります。
WebAPIとは、HTML以外の形式でサイトのデータを返してくれるものです。
普通のWebページではニュースやユーザー情報等がHTML形式で表されているのですが、
WebAPIではXMLやJSONなど、データの種類が見分けやすい形式で表されます。
また、APIですのでパラメータを設定すれば、データをある程度柔軟に取って来れます。
WebAPIへのアクセスは制限がかかっている事もありますが、普通のWebページにアクセスするようにアクセスできるWebAPIもあります。
次のWebAPIは、ATNDのWebAPIへのURLです。
「http://api.atnd.org/events/?keyword=perl&format=json」
アクセスすると「perl」というキーワードを含んだイベント情報がJSON形式で返ってきます。
上記のURLの「?keyword=perl&format=json」は、WebAPIへパラメータを渡している部分です。
ATNDのWebAPIに渡せるパラメータは、下記のページに記述されています。
ATND API リファレンス
このWebAPIへのURLを、URIモジュールを用いて構築します。
#!/usr/bin/env perl use strict; use warnings; use utf8; use LWP::Simple; use URI; my $keyword = 'perl'; my $atnd_api = URI->new('http://api.atnd.org/events/'); $atnd_api->query_form( keyword => uri_escape_utf8($keyword), format => 'json' )\ ; my $json = get($atnd_api->as_string);
パラメータが多くなってくると、ハッシュの形で指定できるのが楽ですね。
$jsonにJSON形式のデータが入ります。