PerlでYahoo!Web検索サービス:XMLの解析(1)

前述した例では、Perlを使ってXMLを取得までしか示していませんでしたが、ここでは、取得したXMLを多少解析する説明をしようと思います。

WebSearchServiceから取得したXMLを解析

ここでは、Perlを使って取得したXMLを簡単に解析してみたいと思います。 まず、手始めとして、「検索内容に合致する結果の総数」「現在のページに表示されている検索結果は全体の何番目か」「今回のXMLで返される検索結果数」の3つを取得してみたいと思います。

HTTPの取得にはPerlのLWPを使いましたが、XMLの解析にはPerlのXMLを使います。 以下にYahoo! Web Search ServiceからXMLを取得して解析するPerlスクリプトのサンプルを示します。



#!/usr/bin/perl

use LWP::Simple;
use XML::Simple;

$appid = "testimpl";
$query = "test";

$url = "http://api.search.yahoo.co.jp/WebSearchService/V1/webSearch?appid=$appid&query=$query";

$response = get($url);

$xml = new XML::Simple;
$yahoo_xml = $xml->XMLin($response);

$totalResults = $yahoo_xml->{totalResultsAvailable};
$resultsReturned = $yahoo_xml->{totalResultsReturned};
$firstResult = $yahoo_xml->{firstResultPosition};

print "Total Results Available : $totalResults\r\n";
print "Total Results Returned  : $resultsReturned\r\n";
print "First Result Position   : $firstResult\r\n";

exit;


上記サンプルでは、get()で取得したXMLを「$xml->XMLin($response)」で解析しています。 解析結果は「$yahoo_xml」に入っています。

上記サンプルでは、XML解析結果から3つの要素を取り出しています。 「$totalResults」には「検索内容に合致する結果の総数」を代入しています。 「$resultsReturned」には「今回のXMLで返される検索結果数」を代入しています。 「$firstResult」には「現在のページに表示されている検索結果は全体の何番目から開始するか」を代入しています。

上記サンプルプログラムでは、変数に代入したそれぞれの値を表示して終了します。

ここでは、XMLを解析して検索結果の全体像を表す数値だけを取得しました、次は各検索結果を解析していきたいと思います。


YouTubeで技術解説やってます!