Yahoo JAPANでの検索結果を利用すると簡単にランクインチェッカーを作る事ができます。ここでは50位以内に指定されたURLがランクインしているかどうか調べます。50位というのはYahooで一度に返される最大数(results=50として得る事ができます)だからです。51位以降も対象にする場合には、処理を工夫する必要があります。
指定されたキーワードで検索されるとYahooからXMLで結果が返されます。このXMLデータのUrlタグ内に指定されたURLがあるかどうかを調べます。indexOf()を使えば手軽に指定されたURLの文字列があるかどうか分かります。指定されたURLがあれば0以上の値、なければ-1になります。
単純にgetElementsByTagName("Url")とすると他のタグ内にもUrlタグがあるため正しい結果を得る事ができません。この場合にはResultタグの情報をgetElementsByTagName()で取得してから、ノードを辿ってUrlタグの内容を取得します。他にもClickUrlタグもありますが、今回のような場合にはClickUrlタグではなく、Urlタグを利用します。これはUrlタグには不要な文字列が含まれていないためです。(サンプルを
実行する)
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>Yahoo JAPANで50位以内にランクインしているかチェック</title>
<link rel="stylesheet" href="main.css" type="text/css" media="all">
<script type="text/javascript" src="xmlhttp.js"></script>
<script type="text/javascript"><!--
function YahooCheck()
{
var srchStr = $("queryString").value;
var srchURL = $("queryURL").value;
if (srchStr == "")
{
$("result").innerHTML = "検索するキーワードを入れてください";
return;
}
if (srchURL == "")
{
$("result").innerHTML = "ページのURLを入れてください";
return;
}
httpObj = createXMLHttpRequest(displayData);
if (httpObj)
{
$("result").innerHTML = "チェック中...";
$("sendBtn").disabled = true;
httpObj.open("GET","yahoo.rb?query="+encodeURI(srchStr)+"&cache="+(new Date()).getTime(),true);
httpObj.send(null);
}
}
function displayData()
{
if ((httpObj.readyState == 4) && (httpObj.status == 200))
{
$("sendBtn").disabled = false;
var txt = "50位以内にはランクインしていませんでした";
var srchURL = $("queryURL").value;
srchURL = srchURL.toLowerCase();
var xmlData = httpObj.responseXML;
var resultList = xmlData.getElementsByTagName("Result");
for (var i=0; i<resultList.length; i++)
{
var checkURL = resultList[i].childNodes[2].childNodes[0].nodeValue;
checkURL = checkURL.toLowerCase();
if (checkURL.indexOf(srchURL) > -1)
{
txt = (i+1) + "位にランクインしています";
break;
}
}
$("result").innerHTML = txt;
txt = "<ol>";
for (var j=0; j<resultList.length; j++)
{
var checkURL = resultList[j].childNodes[2].childNodes[0].nodeValue;
var checkTitle = resultList[j].childNodes[0].childNodes[0].nodeValue;
var bgColor = "white";
if (i==j) bgColor = "#ff8888";
txt += '<li style="background-color:'+bgColor+'"><a href="'+checkURL+'">'+checkTitle+'</a>';
}
$("rankURLList").innerHTML = txt;
}
}
// --></script>
</head>
<body>
<h1>Yahoo JAPANで50位以内にランクインしているかチェック</h1>
<p>自分のページのURLとチェックする単語を入力してください。URLは一部分だけでも大丈夫です(部分一致検索のため)。また、英大文字小文字は問いません。Yahoo JAPANで検索した結果と若干ランクに誤差がある場合があります。<br>
<a href="http://developer.yahoo.co.jp/">Web Services by Yahoo! JAPAN</a></p>
<form method="get" name="ajaxForm" onsubmit="YahooCheck();return false;">
URL : <input type="text" value="www.openspc2.org" id="queryURL"><br>
キーワード : <input type="text" value="JavaScript" id="queryString"><br>
<input type="button" id="sendBtn" value="Yahoo JAPANランクインチェック" onClick="YahooCheck()">
</form>
<div id="result"></div>
<div id="rankURLList"></div>
</body>
</html>
[
第12章 5:Google AdSense文字数不足チェックへ]
[
目次へ]
(2006.2.7)