快速入门:使用 Python 调用必应 Web 搜索 API

警告

2020 年 10 月 30 日,必应搜索 API 从 Azure AI 服务迁移到必应搜索服务。 本文档仅供参考。 有关更新的文档,请参阅必应搜索 API 文档。 关于为必应搜索创建新的 Azure 资源的说明,请参阅通过 Azure 市场创建必应搜索资源

根据此快速入门中的说明对必应 Web 搜索 API 进行第一次调用。 这个 Python 应用程序会向该 API 发送一个搜索请求并显示 JSON 响应。 虽然此应用程序是使用 Python 编写的,但 API 是一种 RESTful Web 服务,与大多数编程语言兼容。

此示例作为 Jupyter 笔记本在 MyBinder 上运行。 若要运行它,请选择“启动活页夹”锁屏提醒:

活页夹

先决条件

创建 Azure 资源

通过创建以下 Azure 资源之一开始使用必应 Web 搜索 API:

必应搜索 v7 资源

  • 在删除资源前,可通过 Azure 门户使用。
  • 使用免费定价层试用该服务,稍后升级到用于生产的付费层。

多服务资源

  • 在删除资源前,可通过 Azure 门户使用。
  • 在多个 Azure AI 服务中对应用程序使用相同的密钥和终结点。

定义变量

  1. subscription_key 值替换为来自你的 Azure 帐户的有效订阅密钥。

    subscription_key = "YOUR_ACCESS_KEY"
    assert subscription_key
    
  2. 声明必应 Web 搜索 API 终结点。 你可以使用以下代码中的全局终结点,或者使用资源的 Azure 门户中显示的自定义子域终结点。

    search_url = "https://api.bing.microsoft.com/v7.0/search"
    
  3. (可选)通过替换 search_term 的值自定义搜索查询。

    search_term = "Azure Cognitive Services"
    

发出请求

此代码使用 requests 库调用必应 Web 搜索 API 并将结果作为 JSON 对象返回。 API 密钥是在 headers 字典中传入的,搜索词和查询参数是在 params 字典中传入的。

有关选项和参数的完整列表,请参阅必应 Web 搜索 API v7

import requests

headers = {"Ocp-Apim-Subscription-Key": subscription_key}
params = {"q": search_term, "textDecorations": True, "textFormat": "HTML"}
response = requests.get(search_url, headers=headers, params=params)
response.raise_for_status()
search_results = response.json()

格式化并显示响应

search_results 对象包括搜索结果以及相关查询和页等元数据。 此代码使用 IPython.display 库格式化响应并在浏览器中显示响应。

from IPython.display import HTML

rows = "\n".join(["""<tr>
                       <td><a href=\"{0}\">{1}</a></td>
                       <td>{2}</td>
                     </tr>""".format(v["url"], v["name"], v["snippet"])
                  for v in search_results["webPages"]["value"]])
HTML("<table>{0}</table>".format(rows))

GitHub 上的示例代码

若要在本地运行此代码,请参阅 GitHub 上提供的完整的示例

后续步骤

另请参阅