連載 [第3回] :
PerlでWeb APIを使いたおすSOAPを利用したWeb API
2006年10月3日(火)
SOAPをPerlから使う
それでは、実際にSOAPを利用したWeb APIにPerlを使ってアクセスしてみることにしましょう。今回サンプルとして利用するのは、Google SOAP Search API(注1)、つまりGoogleが公開している検索用APIです。このサービスは公開されてからかなりの時間がたっているのですがいまだにベータ版で、検索の回数が1つのライセンスキーに対して1日1000クエリに限定されています。実用的かというと疑問が残りますが、有名なサービスということで、サンプルにはよいでしょう。
リスト15に作成したサンプルを示します。このサンプルでは、「perl」というキーワードで検索を行い、10件のURLを表示しています。なお、このサンプルを実行するには、あらかじめGoogleのWebサイトにアクセスして、ライセンスキーを取得する必要があります。
リスト15:Google SOAP Search APIのサンプル
#!/usr/bin/perl
use SOAP::Lite;
use strict;
use warnings;
my $license_key ='ライセンスキー';
my $wsdl = 'file:GoogleSearch.wsdl';
my $word = 'perl';
my $api = SOAP::Lite->service($wsdl);
my $result = $api->doGoogleSearch(
$license_key,
$word,
0,
10,
'False',
'',
'False',
'',
'UTF-8',
'UTF-8',
);
foreach (@{$result->{resultElements}}){
print $_->{URL}."\n";
}
Google SOAP Search APIは、WSDLを公開しているので、それをサンプルと同じディレクトリに置いて実行してください。WSDLのおかげで、プログラム中ではアクセス先のURLも、アクセスしているメソッドの詳細も記述する必要がありません。
アクセスするのはWeb検索を行うdoGoogleSearchというメソッドです。受け渡すパラメータは次ページの表3の10個です。
パラメータ | 意味 |
---|---|
key | Google API Key |
q | 検索する文字列 |
start | 取得する結果のスタート位置(一番初めからなら0) |
maxResult | 取得する結果の件数 |
filter | フィルタを設定する。同じサイトからの結果をひとつにするなどの設定が可能。 |
restricts | 検索する対象を限定する。日本のサイトに限定するなら「countryJP」。 |
safeSearch | Safe Search(アダルトサイトを検索しない機能)を有効にする |
lr | 検索対象とする言語(日本語ならlang_ja) |
ie | 検索する文字列の文字コード |
oe | 返ってくるデータの文字コード |
結果はパラメータ名をキーとしたハッシュとして返ってきます。検索されたページのデータはresultElementsというパラメータなので、それをループで回して、URLを表示しています。
SOAP::Liteは処理を全て自動的に行ってくれるので非常に便利なのですが、内部で何が起こっているのかがよくわかりません。そこで、use文において以下のようにデバッグ情報を表示する設定を行うことで、どういう情報がやり取りされているのかを知ることができます。
use SOAP::Lite +trace => [qw(debug)];
連載バックナンバー
Think ITメルマガ会員登録受付中
Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。