您如何构建 Bing 认知服务 API 新闻请求?

How do you structure a Bing Cogntivie Services API News request?

我目前正在编写一个使用 Bing 认知服务搜索 API 的应用程序,我正在尝试抓取特定的新闻结果,但 运行 遇到了一些问题

对于普通搜索,请求的结构非常简单:

def bing_search(query):

    url = 'https://api.cognitive.microsoft.com/bing/v5.0/search'

    payload = {'q': query, 'freshness': 'week', 'mkt': 'en-us'}

    headers = {'Ocp-Apim-Subscription-Key': 'API KEY', 'X-MSEdge-ClientID': ''}

    r = requests.get(url, params=payload, headers=headers)

    return r.json()

这非常有效,并且 returns 在我添加查询时得到正确的结果,但那只是为了正常搜索。

当我尝试使用新闻搜索时,我按照文档的建议将 url 变量更改为此:

https://api.cognitive.microsoft.com/bing/v5.0/news?

然而,当我 运行 插入查询时,它 returns 一个 json 只包含当天的头条新闻,与查询完全不相关我加了。

我 url 的结构是否正确?如果有人可以帮助我构建请求,使其 returns 得到正确的结果,我将不胜感激。

谢谢:)

将新闻搜索视为具有 2 种操作模式是很有用的:

要在新闻搜索中输入 q=... 参数,您需要使用第二种 "Query-based" 格式。

如果要进行分类搜索,则需要在 mkt 参数中指定 en-USen-GB,然后将 FOO_CATEGORY 具有以下之一:

NEWS_CATEGORIES_US = (
    'Business',
    'Entertainment',
    'Entertainment_MovieAndTV',
    'Entertainment_Music',
    'Health',
    'Politics',
    'ScienceAndTechnology',
    'Science',
    'Technology',
    'Sports',
    'Sports_Golf',
    'Sports_MLB',
    'Sports_NBA',
    'Sports_NFL',
    'Sports_NHL',
    'Sports_Soccer',
    'Sports_Tennis',
    'Sports_CFB',
    'Sports_CBB',
    'US',
    'US_Northeast',
    'US_South',
    'US_Midwest',
    'US_West',
    'World',
    'World_Africa',
    'World_Americas',
    'World_Asia',
    'World_Europe',
    'World_MiddleEast',
)
NEWS_CATEGORIES_GB = (
    'Business',
    'Entertainment',
    'Health',
    'Politics',
    'ScienceAndTechnology',
    'Sports',
    'UK',
    'World',
)

如果您仍然遇到问题,这里有一个简单的 python 2.7 界面:https://github.com/rtruxal/bingapipy