我目前正在编写一个使用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,其中只包含当天的热门新闻报道,与我添加的查询完全无关。
我是否正确构建了网址?如果有人能帮助我构建请求以便返回正确的结果,我将非常感激。
谢谢:)
答案 0 :(得分:1)
将新闻搜索视为具有 2种操作模式是有用的:
分类/趋势。格式为:
https://api.cognitive.microsoft.com/bing/v5.0/news?category=FOO_CATEGORY&...&mkt=en-us& ...
基于查询。格式为:
https://api.cognitive.microsoft.com/bing/v5.0/news/search?q=FOO_QUERY& ...
要在新闻搜索中输入q=...
参数,您需要使用第二种“基于查询”的格式。
如果您要进行分类搜索,则需要在en-US
参数中指定en-GB
或mkt
,然后将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