对于API来说,我有点无能为力,但我相信这是我需要的代码。这是一个通过Microsoft认知服务调用Bing News Search API的python程序,这是调用API的新方法。我的问题是如何实现/嵌入到我的实际网站(由html,css,js和server.js文件组成)的结果?基本上,哪些部分需要去哪里?我非常感谢你能给我的任何帮助。谢谢!
import requests, requests.utils
from py_ms_cognitive_search import PyMsCognitiveSearch
##
##
## News Search
##
##
class PyMsCognitiveNewsException(Exception):
pass
class PyMsCognitiveNewsSearch(PyMsCognitiveSearch):
SEARCH_NEWS_BASE = 'https://api.cognitive.microsoft.com/bing/v5.0/news/search'
def __init__(self, api_key, query, safe=False, custom_params=''):
query_url = self.SEARCH_NEWS_BASE + custom_params
PyMsCognitiveSearch.__init__(self, api_key, query, query_url, safe=safe)
def _search(self, limit, format):
'''
Returns a list of result objects, with the url for the next page MsCognitive search url.
'''
payload = {
'q' : self.query,
'count' : '50', #currently 50 is max per search.
'offset': self.current_offset,
#'mkt' : 'en-us', #optional
#'safesearch' : 'Moderate', #optional
}
headers = { 'Ocp-Apim-Subscription-Key' : self.api_key }
response = requests.get(self.QUERY_URL, params=payload, headers=headers)
json_results = self.get_json_results(response)
packaged_results = [NewsResult(single_result_json) for single_result_json in json_results["value"]]
self.current_offset += min(50, limit, len(packaged_results))
return packaged_results
class NewsResult(object):
'''
The class represents a SINGLE news result.
Each result will come with the following:
the variable json will contain the full json object of the result.
category: category of the news
name: name of the article (title)
url: the url used to display.
image_url: url of the thumbnail
date_published: the date the article was published
description: description for the result
Not included: about, provider, mentions
'''
def __init__(self, result):
self.json = result
self.category = result.get('category')
#self.about = result['about']
self.name = result.get('name')
self.url = result.get('url')
try:
self.image_url = result['image']['thumbnail']['contentUrl']
except KeyError as kE:
self.image_url = None
self.date_published = result.get('datePublished')
self.description = result.get('description')
答案 0 :(得分:0)
_search函数返回结果列表(packaged_results)。如果您想在网站中显示这些内容,则必须使用Python脚本加载/呈现html文件。这就是像Django这样的框架派上用场的地方,其中使用了视图和模板。
Django中搜索页面的基本视图(进入应用程序的views.py模块):
def search(request):
result_list = []
if request.method=='POST':
query = request.POST['query'].strip()
if query:
result_list = _search(query)
return render(request, 'web/search.html', {'result_list': result_list})
在search.html模板的正文中(使用Django模板语言,以及每个新闻结果的问题作者类):
<div>
{% if result_list %}
<h3>Results</h3>
<!-- Display search results -->
<div>
{% for result in result_list %}
<div>
<h4>
{{ result.category }}</a>
</h4>
<p>{{ result.about }}</p>
</div>
{% endfor %}
</div>
{% endif %}
</div>
如果您希望将Django用于此特定问题,请参阅编写视图的文档和Django模板的另一个文档,这些模板都是HTML文件。