PerlでYahoo!Web検索サービス:Yahooでの順位を調べる

Yahoo Web検索サービスを使って何かを作ろうと思ったときに、まず最初に思いつくのはYahooでの順位を調べるプログラムを書くことだと思います。 ここでは、Yahooでの順位を調べる方法を説明したいと思います。

サンプル

以下にYahoo! Web Search Serviceを使って特定のサイトの検索順位を調べる方法を説明したいと思います。



#!/usr/bin/perl

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

# for warning "Wide character in print at ..."
binmode(STDOUT, ":utf8");

$appid = "testimpl";
$query = "geek";

$my_site_url = "http://www.geekpage.jp/";
$start = 1;
$results = 50;

for ($i=0; $i<20; $i++) {
  if ($start + $results - 1 >= 1000) {
    if ($start >= 1000) {
      last;
    } else {
      $results = 1000 - $start;
    }
  }

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

  print "start = $start\r\n";

  $response = get($url);

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

  $num = $start;
  foreach $result (@{$yahoo_xml->{Result}}) {
    $result_url = $result->{Url};

    if ($result_url =~ /^$my_site_url/) {
      print "keyword : $query\r\n";
      print "URL     : $result_url\r\n";
      print "number  : $num\r\n";

      print "\r\n";
    }
    $num++;
  }

  $start += 50;
}

exit;


上記サンプルでは、指定したキーワードでサイトがYahooで何番目になるかを表示します。 上記サンプルでは、指定したサイトと前方一致する全てのURLが表示されます。

キーワードは変数$queryを使って指定します。 調べたいサイトは変数$my_site_urlで指定します。 上記サンプルでは、1番から1000番までの検索結果を調べます。


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