2017-01-10 72 views
0

我目前正在寫一個使用Bing的認知服務搜索API的應用程序,我試圖刮尤其是新聞結果和我遇到了一些問題您如何構建Bing Cogntivie Services 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當天的頭條新聞報道,並且與我添加的查詢無關。

我正確地構造了url嗎?如果有人能夠幫助我構建請求以便返回正確的結果,我將非常感激。

謝謝:)

回答

1

它認爲新聞搜索具有操作的2模式是有用的:

要在新聞搜索中輸入q=... PARAM你需要使用第二個「基於查詢」的格式。

如果你想要做一個分類搜索,你需要指定任何en-USen-GBmkt PARAM,然後用下面的一個替代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

+0

非常感謝,完美的工作! – Ruthus99