美国东部时间3月1日,雅虎公司联合创始人之一的杨致远将宣布公司的搜索网络将进入web服务。雅虎公司在www.developer.yahoo.com网站建立了yahoo search developer network,公司计划在此纽约举行的搜索引擎战略大会(search engine strategies conference)上推出这一计划。该网络将允许开发者在雅虎搜索之上建立新的应用程序,其中包括图像、视频、新闻以及地区搜索等内容。想要使用这项服务的会员必须先去http://api.search.yahoo.com/webservices/register_application 申请一个自已的id号,注:每个id号每天只能搜索5000次。
下面我们看一下,如何用javascript脚本调用yahoo! search api实现搜索的效果,全部脚本如下:
/*
* yahoo_search_api.js
* part of the yahoo! search sidebar for firefox
* powered by yahoo! search web services (http://api.search.yahoo.com)
* written by marc abramowitz (http://marc.abramowitz.info)
* copyright (c) 2005 yahoo! inc.
* www.knowsky.com
*/
function yahoo_search() {}
yahoo_search.baseurl = function () {
return "http://api.search.yahoo.com/websearchservice/v1/";
}
yahoo_search.appid = function () {
return "yahoosearchsidebar";
}
yahoo_search.baseargs = function () {
return "appid=" + this.appid();
}
yahoo_search.results = function (args) {
var xmlurl = this.baseurl() + "websearch?"
+ this.baseargs()
+ "&query=" + args["doc"]
+ "&zip="
+ "&start=" + args["first"]
+ "&results=" + args["count"];
var xmlhttp = new xmlhttprequest();
xmlhttp.open("get", xmlurl, false);
xmlhttp.send(null);
return this.readxml(xmlhttp.responsexml);
}
yahoo_search.readxml = function (xmldoc) {
try {
var retval = new array();
var resultset = xmldoc.getelementsbytagname("resultset")[0];
var totalresultsavailable = parseint(resultset.getattribute("totalresultsavailable"));
var totalresultsreturned = parseint(resultset.getattribute("totalresultsreturned"));
var firstresultposition = parseint(resultset.getattribute("firstresultposition"));
var start = firstresultposition;
var end = firstresultposition + totalresultsreturned - 1;
var results = xmldoc.getelementsbytagname("result");
for (var i = 0; i < results.length; i++) {
var result = results[i];
var title = result.getelementsbytagname('title')[0].firstchild.nodevalue;
var summary = '';
if (result.getelementsbytagname('summary')[0].firstchild) {
summary = result.getelementsbytagname('summary')[0].firstchild.nodevalue;
}
var clickurl = result.getelementsbytagname('clickurl')[0].firstchild.nodevalue;
var url = result.getelementsbytagname('url')[0].firstchild.nodevalue;
retval[i] = { i: start + i, title: title, summary: summary, clickurl: clickurl, url: url };
}
return retval;
} catch(exception) {
alert('exception occurred while reading xml (i=' + i + '; start=' + start + ';end=' + end + '): ' + exception);
}
}
有兴趣的朋友还可以看一下由[动态网站制作指南]所制作的asp版本:http://www.knowsky.com/yahoo/
闽公网安备 35060202000074号