当前位置: 首页 > 面试题库 >

必应搜索API和Azure

王念
2023-03-14
问题内容

我试图以编程方式在Microsoft Bing搜索引擎上执行搜索。

这是我的理解:

  • 有一个Bing Search API 2.0,即将被替换(2012年8月1日)
  • 新的API被称为Windows Azure Marketplace。
  • 两者使用不同的URL。

在旧的API(Bing Search API 2.0)中
,您在URL中指定一个密钥(应用程序ID),该密钥将用于验证请求。只要您在URL中将密钥作为参数,就可以获得结果。

在新的API(Windows Azure Marketplace)中
,您不要在URL中包括密钥(帐户密钥)。而是输入查询URL,然后服务器将要求您提供凭据。使用浏览器时,会 弹出 一个 对话框,
要求您提供帐号名称和密码。指示是将帐户名保留为空白,然后将您的密钥插入密码字段。

好的,我已经完成了所有这些工作,并且可以在浏览器页面上看到搜索结果的JSON格式的结果。

如何在PHP中以编程方式进行此操作?我尝试从Microsoft MSDN库中搜索文档和示例代码,但是我在错误的位置搜索,或者那里的资源极其有限。

谁能告诉我您如何在PHP中执行“在弹出窗口的密码字段中输入密钥”部分?

在此先感谢。


问题答案:

新服务的文档可能会变得有些有趣-
特别是在MSDN中。最清晰的解释我能找到的是在迁移指南从这个Bing搜索API页面。最重要的是,迁移指南最后提供了一个很好的PHP简单示例。

编辑:好的,迁移指南是一个起点,但这不是最好的例子。这是两种对我有用的方法(没有代理,防火墙等干扰):

使用file_get_contents

注意:需要启用“
allow_url_fopen
”才能使其正常工作。您可以使用ini_set(或更改php.ini等)。

if (isset($_POST['submit'])) 
{

    // Replace this value with your account key
    $accountKey = 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=';            
    $ServiceRootURL =  'https://api.datamarket.azure.com/Bing/Search/';                    
    $WebSearchURL = $ServiceRootURL . 'Web?$format=json&Query=';

    $cred = sprintf('Authorization: Basic %s', 
      base64_encode($accountKey . ":" . $accountKey) );

    $context = stream_context_create(array(
        'http' => array(
            'header'  => $cred
        )
    ));

    $request = $WebSearchURL . urlencode( '\'' . $_POST["searchText"] . '\'');

    $response = file_get_contents($request, 0, $context);

    $jsonobj = json_decode($response);

    echo('<ul ID="resultList">');

    foreach($jsonobj->d->results as $value)
    {                        
        echo('<li class="resultlistitem"><a href="' 
                . $value->URL . '">'.$value->Title.'</a>');
    }

    echo("</ul>");
}

使用cURL

如果已安装cURL,最近这是正常的情况:

<?php
  $query = $_POST['searchText'];

  $accountKey = 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA';
  $serviceRootURL =  'https://api.datamarket.azure.com/Bing/Search/';  
  $webSearchURL = $serviceRootURL . 'Web?$format=json&Query=';

  $request = $webSearchURL . "%27" . urlencode( "$query" ) . "%27";

  $process = curl_init($request);
  curl_setopt($process, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
  curl_setopt($process, CURLOPT_USERPWD,  "$accountKey:$accountKey");
  curl_setopt($process, CURLOPT_TIMEOUT, 30);
  curl_setopt($process, CURLOPT_RETURNTRANSFER, TRUE);
  $response = curl_exec($process);
  $response = json_decode($response);

  echo "<ol>";
  foreach( $response->d->results as $result ) {
    $url = $result->Url;
    $title = $result->Title;

    echo "<li><a href='$url'>$title</a></li>";
  }
  echo "</ol>";
?>

[WTS]将SearchWeb更改为Search。



 类似资料:
  • 使用爪哇的优酷Api,我做了一个视频搜索。通过使用以下示例,它运行良好。 ttps://developers.google.com/youtube/v3/code_samples/java#search_by_keyword 获得了以下数据。 我想要“NextPageToken”和“PrevPageTokens”。所以我添加了以下代码。 searchResponse.getNextPageToke

  • 为了开始使用elasticsearch和kibana,我尝试了教程。但现在我得到了一个我自己无法解决的错误。 它对这个非常有趣:elasticsearch bool查询组合必须与或 亲切地问候格雷格

  • 主要内容:多索引此API用于在Elasticsearch中搜索内容。 用户可以通过发送具有查询字符串的获取请求作为参数或在请求的消息正文中的查询来进行搜索。所有的搜索API都是多索引,多类型。 多索引 Elasticsearch允许我们搜索存在于所有索引或一些特定索引中的文档。 例如,如果我们需要搜索名称包含的所有文档。 响应 或者,同样地我们可以在,索引中搜索 - 多类型 还可以在所有类型或某种指定类型的索引中

  • Google AJAX 搜索 API 可让您通过 JavaScript 将 Google 搜索放在网页中。您可以嵌入一个简易的动态搜索框,并可以在自己的网页上显示搜索结果,或者以创新的编程方式使用这些结果。 主要用途: 1. 将 Google 网页搜索、资讯搜索和博客搜索集成到您的网站中。 2. 将本地搜索结果添加到您的网站中,或者使用 Google 地图 API 混搭集成这些结果。 3. 将 Y

  • 问题内容: 在Bing搜索引擎上搜索图像时,结果显示如下: http://www.bing.com/images/search?q=stack+overflow 请注意,如何保持滚动状态和滚动状态,并且没有“正常”分页。 我的问题是:他们如何做到这一点?我可以看到发生了一些Ajax / javascript事件,但是代码不容易阅读。我特别想知道他们如何知道用户查看端口内是否有“空框”。 问题答案:

  • 问题内容: 在GAE Search API 的Python版本中查询搜索索引时,最好的搜索方式是:首先搜索单词与标题匹配的文档,然后再搜索与正文匹配的文档的项目? 例如给出: 如果可能,如何对上述形式的s的索引执行搜索,并以该优先级返回结果,其中要搜索的短语在变量中: 符合条件的文件;然后 正文与单词相匹配的文档。 似乎正确的解决方案是使用,但是由于我之前没有使用过此搜索功能,因此我可能对此不以为