使用必应新闻搜索 API 搜索新闻
警告
2020 年 10 月 30 日,必应搜索 API 从 Azure AI 服务迁移到必应搜索服务。 本文档仅供参考。 有关更新的文档,请参阅必应搜索 API 文档。 关于为必应搜索创建新的 Azure 资源的说明,请参阅通过 Azure 市场创建必应搜索资源。
使用必应图像搜索 API,可以轻松将必应的认知新闻搜索功能集成到应用程序中。
虽然必应新闻搜索 API 主要用于查找并返回相关的新闻文章,但它还提供了一些在网络上进行智能化、集中化新闻检索的功能。
建议并使用搜索词
如果提供供用户输入搜索词的搜索框,请使用必应自动推荐 API 来改进体验。 此 API 根据用户键入的部分搜索词返回建议的查询字符串。
用户输入搜索词以后,URL 在设置 q 查询参数之前会对搜索词进行编码。 例如,如果用户输入 sailing dinghies,系统会将 q
设置为 sailing+dinghies
或 sailing%20dinghies
。
获取一般新闻
若要从 Web 获取与用户的搜索词相关的普通新闻文章,请发送以下 GET 请求:
GET https://api.cognitive.microsoft.com/bing/v7.0/news/search?q=sailing+dinghies&mkt=en-us HTTP/1.1
Ocp-Apim-Subscription-Key: 123456789ABCDE
User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 822)
X-Search-ClientIP: 999.999.999.999
X-Search-Location: lat:47.60357;long:-122.3295;re:100
X-MSEdge-ClientID: <blobFromPriorResponseGoesHere>
Host: api.cognitive.microsoft.com
如果是首次调用任何必应 API,请勿添加客户端 ID 请求头。 只有在以前调用过必应 API 且必应针对用户和设备组合返回了客户端 ID 的情况下,才包括客户端 ID。
若要从特定的域获取新闻,请使用 site: 查询运算符。
GET https://api.cognitive.microsoft.com/bing/v7.0/news/search?q=sailing+dinghies+site:contososailing.com&mkt=en-us HTTP/1.1
下面的 JSON 示例显示了对上一查询的响应。 作为必应搜索 API 的使用和显示要求的一部分,你必须按照响应中提供的顺序显示每篇新闻文章。 如果该文章有群集的文章,则应表明存在相关的文章并在用户提出请求时显示它们。
{
"_type" : "News",
"readLink" : "https:\/\/api.cognitive.microsoft.com\/bing\/v5\/news\/search?q=sailing+dinghies",
"totalEstimatedMatches" : 88400,
"value" : [{
"name" : "Sailing Vies for Four Trophies",
"url" : "http:\/\/www.bing.com\/cr?IG=CCE2F06CA750455891FE99A72...",
"image" : {
"thumbnail" : {
"contentUrl" : "https:\/\/www.bing.com\/th?id=ON.9C23AA5...",
"width" : 650,
"height" : 341
}
},
"description" : "College Rankings, presented by Zim...",
"provider" : [{
"_type" : "Organization",
"name" : "contoso.com"
}],
"datePublished" : "2017-04-14T15:28:00"
},
...
{
"name" : "Fabrikam Sailing Club to host Mirror Dinghy...",
"url" : "http:\/\/www.bing.com\/cr?IG=CCE2F06CA750455891F...",
"image" : {
"thumbnail" : {
"contentUrl" : "https:\/\/www.bing.com\/th?id=ON.36...",
"width" : 448,
"height" : 300
}
},
"description" : "The sailing club that trained Olympian Ben...",
"provider" : [{
"_type" : "Organization",
"name" : "Contoso"
}],
"datePublished" : "2017-04-04T11:02:00",
"category" : "Sports"
}]
}
news 应答列出必应认为与查询相关的新闻文章。
totalEstimatedMatches
字段包含一个估计数,是对可以查看的文章数的估计。 若要了解如何按页浏览这些文章,请参阅翻页新闻。
该列表中的每篇新闻包含该文章的名称、说明及其在宿主网站上的 URL。 如果文章包含图像,则该对象包括图像的缩略图。 使用 name
和 url
可以创建一个超链接,用于将用户转到宿主站点上的新闻。 如果文章包含图像,也请使用 url
为图像嵌入可单击的链接。 请务必使用 provider
来指定文章的属性。
如果必应可以确定新闻文章的类别,则文章会包含 category
字段。
获取当天的头条新闻
若要获取今天的热门新闻文章,可以像以前一样发送相同的一般新闻请求,同时将 q
参数保留为未设置。
GET https://api.cognitive.microsoft.com/bing/v7.0/news/search?q=&mkt=en-us HTTP/1.1
Ocp-Apim-Subscription-Key: 123456789ABCDE
User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 822)
X-Search-ClientIP: 999.999.999.999
X-Search-Location: lat:47.60357;long:-122.3295;re:100
X-MSEdge-ClientID: <blobFromPriorResponseGoesHere>
Host: api.cognitive.microsoft.com
获取头条新闻的响应几乎与获取一般新闻的响应相同。 但是,news
应答不包含 totalEstimatedMatches
字段,因为结果数已设定。 头条新闻文章的数目可能因新闻圈而异。 请务必使用 provider
字段来指定文章的属性。
按类别获取新闻
若要按类别获取新闻文章(例如头条体育或娱乐文章),请向必应发送以下 GET 请求:
GET https://api.cognitive.microsoft.com/bing/v7.0/news?category=sports&mkt=en-us HTTP/1.1
Ocp-Apim-Subscription-Key: 123456789ABCDE
User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 822)
X-Search-ClientIP: 999.999.999.999
X-Search-Location: lat:47.60357;long:-122.3295;re:100
X-MSEdge-ClientID: <blobFromPriorResponseGoesHere>
Host: api.cognitive.microsoft.com
请使用 category 查询参数来指定要获取的文章的类别。 如需可以指定的新闻类别的列表,请参阅 News Categories by Market(按市场划分的新闻类别)。
按类别获取新闻的响应与获取普通新闻的响应几乎相同。 区别是,文章全都来自指定的类别。
获取标题新闻
若要请求标题新闻文章以及获取所有新闻类别的文章,请向必应发送以下 GET 请求:
GET https://api.cognitive.microsoft.com/bing/v7.0/news?mkt=en-us HTTP/1.1
Ocp-Apim-Subscription-Key: 123456789ABCDE
User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 822)
X-MSEdge-ClientIP: 999.999.999.999
X-Search-Location: lat:47.60357;long:-122.3295;re:100
X-MSEdge-ClientID: <blobFromPriorResponseGoesHere>
Host: api.cognitive.microsoft.com
请勿包括 category 查询参数。
获取标题新闻的响应与获取当天的头条新闻的响应相同。 如果文章为标题文章,其 headline
字段会设置为 true。
默认情况下,响应包含最多 12 篇标题文章。 若要更改需返回的标题文章的数目,请指定 headlineCount 查询参数。 就每个新闻类别来说,响应还包括最多四篇非标题文章。
响应将群集文章计为一篇文章。 由于一个群集可能有多篇文章,因此就每个类别来说,响应可能包含 12 篇以上的标题文章,4 篇以上的非标题文章。
获取热门新闻
若要获取社交网络上的热门新闻主题,请向必应发送以下 GET 请求:
GET https://api.cognitive.microsoft.com/bing/v7.0/news/trendingtopics?mkt=en-us HTTP/1.1
Ocp-Apim-Subscription-Key: 123456789ABCDE
User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 822)
X-Search-ClientIP: 999.999.999.999
X-Search-Location: lat:47.60357;long:-122.3295;re:100
X-MSEdge-ClientID: <blobFromPriorResponseGoesHere>
X-MSAPI-UserState: <blobFromPriorResponseGoesHere>
Host: api.cognitive.microsoft.com
注意
热门主题仅在美国和中国市场提供。
以下 JSON 是对上一请求的响应。 每篇热门新闻文章包含一个相关的图像、突发新闻标志,以及一个链接到该文章的必应搜索结果的 URL。 请使用 webSearchUrl
字段中的 URL 将用户带到必应搜索结果页。 也可自行使用查询文本来调用 Web 搜索 API,以便显示结果。
{
"_type" : "TrendingTopics",
"value" : [{
"name" : "Canada pot measure",
"image" : {
"url" : "https:\/\/www.bing.com\/th?id=OPN.RTNews_hHD...",
"provider" : [{
"_type" : "Organization",
"name" : "Contoso Images"
}]
},
"webSearchUrl" : "https:\/\/www.bing.com\/cr?IG=070292D8CEDD...",
"isBreakingNews" : false,
"query" : {
"text" : "Canada marijuana"
}
},
{
"name" : "Down on Vegas move",
"image" : {
"url" : "https:\/\/www.bing.com\/th?id=OPN.RTNews_Bfbmg8h...",
"provider" : [{
"_type" : "Organization",
"name" : "Contoso"
}]
},
"webSearchUrl" : "https:\/\/www.bing.com\/cr?IG=070292D8CEDD...",
"isBreakingNews" : false,
"query" : {
"text" : "Marcus Appel Las Vegas"
}
},
...
]
}
获取相关新闻
如果有其他文章与某篇新闻文章相关,则该新闻文章可能包含 clusteredArticles 字段。 下面显示的文章包含群集文章。
{
"name" : "Playoffs 2017: Betting lines, point spreads...",
"url" : "http:\/\/www.bing.com\/cr?IG=4B7056CEC271408997D115...",
"image" : {
"thumbnail" : {
"contentUrl" : "https:\/\/www.bing.com\/th?id=ON.D7B1...",
"width" : 700,
"height" : 393
}
},
"description" : "April 14, 2017 3:37pm EDT April 14, 2017 3:34pm...",
"provider" : [{
"_type" : "Organization",
"name" : "Contoso"
}],
"datePublished" : "2017-04-14T19:43:00",
"category" : "Sports",
"clusteredArticles" : [{
"name" : "Playoffs 2017: Betting odds, favorites to win...",
"url" : "http:\/\/www.bing.com\/cr?IG=4B7056CEC271408997D1159E...",
"description" : "April 14, 2017 3:30pm EDT April 14, 2017 3:27pm...",
"provider" : [{
"_type" : "Organization",
"name" : "Contoso"
}],
"datePublished" : "2017-04-14T19:37:00",
"category" : "Sports"
}]
},
限制请求
服务和订阅类型决定了每秒可以发出的查询数 (QPS)。 请确保应用程序包含防止超出配额限制的逻辑。 如果达到或超出 QPS 限制,则请求会失败,系统会返回 HTTP 429 状态代码。 响应包含 Retry-After
标头,该标头指示需等待多久才能发送另一请求。
拒绝服务与限制
该服务区分拒绝服务 (DoS) 攻击和 QPS 违规。 如果该服务怀疑存在 DoS 攻击,则请求会成功(HTTP 状态代码为“200 正常”)。 但是,响应正文为空。