首页 php教程 php手册 利用Yahoo! Search API开发自已的搜索引擎-php版

利用Yahoo! Search API开发自已的搜索引擎-php版

Jun 13, 2016 pm 12:46 PM
3月 api search yahoo 公司 使用 开发 搜索引擎 时间 美国 雅虎

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

    下面我们看一下,如何用PHP脚本调用Yahoo! Search API实现搜索的效果,全部脚本如下:
  

// Yahoo Web Services PHP Example Code
// Rasmus Lerdorf
// www.knowsky.com

$appid = 'YahooDemo';
// 在这输入你申请的ID号

$service = array('image'=>'http://api.search.yahoo.com/ImageSearchService/V1/imageSearch',
                 'local'=>'http://api.local.yahoo.com/LocalSearchService/V1/localSearch',
                 'news'=>'http://api.search.yahoo.com/NewsSearchService/V1/newsSearch',
                 'video'=>'http://api.search.yahoo.com/VideoSearchService/V1/videoSearch',
                 'web'=>'http://api.search.yahoo.com/WebSearchService/V1/webSearch');
?>

PHP Yahoo Web Service Example Code


Search Term:

Zip Code: (for local search)




function done() {?>

exit;
}

if(empty($_REQUEST['query']) || !in_array($_REQUEST['type'],array_keys($service))) done();

// Ok, here we go, we have the query and the type of search is valid
// First build the query
$q = '?query='.rawurlencode($_REQUEST['query']);
if(!empty($_REQUEST['zip'])) $q.="&zip=".$_REQUEST['zip'];
if(!empty($_REQUEST['start'])) $q.="&start=".$_REQUEST['start'];
$q .= "&appid=$appid";

// Then send it to the appropriate service
$xml = file_get_contents($service[$_REQUEST['type']].$q);

// Parse the XML and check it for errors
if (!$dom = domxml_open_mem($xml,DOMXML_LOAD_PARSING,$error)) {
  echo "XML parse error\n";
  foreach ($error as $errorline) {
  /* For production use this should obviously be logged to a file instead */
    echo $errorline['errormessage']."
\n";
    echo " Node  : " . $errorline['nodename'] . "
\n";
    echo " Line  : " . $errorline['line'] . "
\n";
    echo " Column : " . $errorline['col'] . "
\n";
  }
  done();
}

// Now traverse the DOM with this function
// It is basically a generic parser that turns limited XML into a PHP array
// with only a couple of hardcoded tags which are common across all the
// result xml from the web services
function xml_to_result($dom) {
  $root = $dom->document_element();
  $res['totalResultsAvailable'] = $root->get_attribute('totalResultsAvailable');
  $res['totalResultsReturned'] = $root->get_attribute('totalResultsReturned');
  $res['firstResultPosition'] = $root->get_attribute('firstResultPosition');

  $node = $root->first_child();
  $i = 0;
  while($node) {
    switch($node->tagname) {
      case 'Result':
        $subnode = $node->first_child();
        while($subnode) {
          $subnodes = $subnode->child_nodes();
          if(!empty($subnodes)) foreach($subnodes as $k=>$n) {
            if(empty($n->tagname)) $res[$i][$subnode->tagname] = trim($n->get_content());
            else $res[$i][$subnode->tagname][$n->tagname]=trim($n->get_content());
          }
          $subnode = $subnode->next_sibling();
        }
        break;
      default:
        $res[$node->tagname] = trim($node->get_content());
        $i--;
        break;
    }
    $i++;
    $node = $node->next_sibling();
  } 
  return $res;
}

$res = xml_to_result($dom);

// Ok, now that we have the results in an easy to use format,
// display them.  It's quite ugly because I am using a single
// display loop to display every type and I don't really understand HTML
$first = $res['firstResultPosition'];
$last = $first + $res['totalResultsReturned']-1;
echo "

Matched ${res[totalResultsAvailable]}, showing $first to $last

\n";
if(!empty($res['ResultSetMapUrl'])) {
  echo "

Result Set Map: ${res[ResultSetMapUrl]}

\n";
}
for($i=0; $i  foreach($res[$i] as $key=>$value) {
    switch($key) {
      case 'Thumbnail':
        echo "利用Yahoo! Search API开发自已的搜索引擎-php版\n";
        break;
      case 'Cache':
        echo "Cache: ${value[Url]} [${value[Size]}]
\n";
        break;
      case 'PublishDate':
        echo "$key: ".strftime('%X %x',$value);
        break;
      default:
        if(stristr($key,'url')) echo "$value
\n";
        else echo "$key: $value
";
        break;
    }
  }
  echo "
\n";
}

// Create Previous/Next Page links
if($start > 1)
  echo '   ';
if($last   echo '
Next Page->';
done();
?>

有兴趣的朋友还可以看一下由[动态网站制作指南]所制作的ASP版本:http://www.knowsky.com/yahoo/

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

四款值得推荐的AI辅助编程工具 四款值得推荐的AI辅助编程工具 Apr 22, 2024 pm 05:34 PM

这个AI辅助编程工具在这个AI迅速发展的阶段,挖掘出了一大批好用的AI辅助编程工具。AI辅助编程工具能够提高开发效率、改善代码质量、降低bug率,是现代软件开发过程中的重要助手。今天大姚给大家分享4款AI辅助编程工具(并且都支持C#语言),希望对大家有所帮助。https://github.com/YSGStudyHards/DotNetGuide1.GitHubCopilotGitHubCopilot是一款AI编码助手,可帮助你更快、更省力地编写代码,从而将更多精力集中在问题解决和协作上。Git

小红书发布作品时间怎么设置?发布作品时间准确吗? 小红书发布作品时间怎么设置?发布作品时间准确吗? Mar 24, 2024 pm 01:31 PM

小红书,一个充满生活气息与知识分享的平台,让越来越多的创作者在此畅所欲言。要想在小红书上获得更多的关注和点赞,除了内容质量之外,发布作品的时间也是至关重要的。那么,如何设置小红书发布作品的时间呢?一、小红书发布作品时间怎么设置?1.了解用户活跃时间首先,需要明确小红书用户的活跃时间。通常来说,晚上8点到10点以及周末下午是用户活跃度较高的时段。然而,这个时间段也会受到受众群体和地域等因素的影响而有所不同。因此,为了更好地把握用户活跃时段,建议对不同群体的行为习惯进行更详细的分析。通过了解用户的活

AI程序员哪家强?探索Devin、通义灵码和SWE-agent的潜力 AI程序员哪家强?探索Devin、通义灵码和SWE-agent的潜力 Apr 07, 2024 am 09:10 AM

2022年3月3日,距世界首个AI程序员Devin诞生不足一个月,普林斯顿大学的NLP团队开发了一个开源AI程序员SWE-agent。它利用GPT-4模型在GitHub存储库中自动解决问题。SWE-agent在SWE-bench测试集上的表现与Devin相似,平均耗时93秒,解决了12.29%的问题。SWE-agent通过与专用终端交互,可以打开、搜索文件内容,使用自动语法检查、编辑特定行,以及编写和执行测试。(注:以上内容为原内容微调,但保留了原文中的关键信息,未超过指定字数限制。)SWE-A

学习如何利用Go语言开发移动应用程序 学习如何利用Go语言开发移动应用程序 Mar 28, 2024 pm 10:00 PM

Go语言开发移动应用程序教程随着移动应用市场的不断蓬勃发展,越来越多的开发者开始探索如何利用Go语言开发移动应用程序。作为一种简洁高效的编程语言,Go语言在移动应用开发中也展现出了强大的潜力。本文将详细介绍如何利用Go语言开发移动应用程序,并附上具体的代码示例,帮助读者快速入门并开始开发自己的移动应用。一、准备工作在开始之前,我们需要准备好开发环境和工具。首

蓝色星原旅谣是哪个公司的 蓝色星原旅谣是哪个公司的 Mar 22, 2024 pm 03:41 PM

蓝色星原旅谣在近期公布宣传片之后登上了游戏热榜,许多玩家都非常好奇蓝色星原旅谣是哪个公司的,其实是来自上海二次元厂商蛮啾新作,下面小编会为大家带来蓝色星原旅谣游戏公司介绍,快来一起看看吧。蓝色星原旅谣是哪个公司的答:是蛮啾网络推出的。1、首先蓝色星原旅谣是蛮啾旗下大世界RPG所推出的一款游戏,已经于3月20日公布了宣传片。2、这款产品在2023年10月拿到版号。游戏的商标及运营单位均登记在一家叫的公司名下,后者成立于2023年2月,官网显示其总部位于新加坡。3、此次发布的11分钟宣传片里透露出这

消息称庄子寿下月将常驻美国,推进台积电美国工厂建设:冲刺 2025 年投产 消息称庄子寿下月将常驻美国,推进台积电美国工厂建设:冲刺 2025 年投产 Apr 10, 2024 pm 04:52 PM

本站4月10日消息,根据自由时报报道,台积电计划今年5月派遣庄子寿博士前往美国,和王英郎合作共同推进台积电美国工厂的建设步伐。美国商务部目前已经敲定了对台积电、英特尔、三星公司的补助金额,但台积电位于美国的工厂依然存在不少的问题。台积电领导层希望通过派遣庄子寿博士坐镇,和专长生产制造的王英郎合作,从而推动先进制程方面尽快落地。本站查询台积电官方领导层团队内容:庄子寿博士现任台积电公司厂务副总经理,负责新厂的规划、设计、兴建及维护,以及已有厂房厂务设施的运转及升级。庄博士于1989年加入台积公司担

了解VSCode:这款工具到底是用来干什么的? 了解VSCode:这款工具到底是用来干什么的? Mar 25, 2024 pm 03:06 PM

《了解VSCode:这款工具到底是用来干什么的?》作为一个程序员,无论是初学者还是资深开发者,都离不开代码编辑工具的使用。在众多编辑工具中,VisualStudioCode(简称VSCode)作为一款开源、轻量级、强大的代码编辑器备受开发者欢迎。那么,VSCode到底是用来干什么的?本文将深入探讨VSCode的功能和用途,并提供具体的代码示例,以帮助读者

PHP在Web开发中是属于前端还是后端? PHP在Web开发中是属于前端还是后端? Mar 24, 2024 pm 02:18 PM

PHP在Web开发中是属于后端。PHP是一种服务器端脚本语言,主要用于处理服务器端的逻辑,生成动态网页内容。与前端技术相比,PHP更多地用于与数据库交互、处理用户请求以及生成页面内容等后端操作。接下来通过具体的代码示例来说明PHP在后端开发中的应用。首先,我们来看一个简单的PHP代码示例,用于连接数据库并查询数据:

See all articles