服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

利用yahoo! search api开发自已的搜索引擎-javascript版


  美国东部时间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/

扫描关注微信公众号