如何构建Bing Cogntivie Services API新闻请求?

时间:2017-01-10 02:17:30

标签: python-3.x bing bing-api microsoft-cognitive

我目前正在编写一个使用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()

当我添加查询时,这非常有效,并返回正确的结果,但这仅适用于普通搜索。

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

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

但是,当我运行此命令并插入查询时,它会返回一个json,其中只包含当天的热门新闻报道,与我添加的查询完全无关。

我是否正确构建了网址?如果有人能帮助我构建请求以便返回正确的结果,我将非常感激。

谢谢:)

1 个答案:

答案 0 :(得分:1)

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

要在新闻搜索中输入q=...参数,您需要使用第二种“基于查询”的格式。

如果您要进行分类搜索,则需要在en-US参数中指定en-GBmkt,然后将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', ) 以下之一:

<modalForm (submit)="f.submit" [url]="someUrl">
    <myForm #f><myForm>
</modalForm>

如果你还有问题,这里有一个简单的python 2.7界面:https://github.com/rtruxal/bingapipy