bing search api v5" __ next"替换?

时间:2016-11-16 09:24:17

标签: azure pagination bing-api

我正在将我的网站从Bing Azure API(v2)迁移到新的Bing V5搜索API。
在旧的API上,一个对象使用这个" __ next"判断他之后是否还有别的东西 但是在新的API上,json不再返回它了 我正在努力升级我的分页,如果没有这个元素,我就不知道怎么做。
任何人都知道在新的API中替换它的是什么? 我无法在其迁移指南或新的V5 API指南中找到任何信息 感谢。

2 个答案:

答案 0 :(得分:0)

您应该在首次调用API时阅读totalEstimatedMatches值,然后使用& count和& offset参数来浏览结果,如下所述:https://msdn.microsoft.com/en-us/library/dn760787.aspx

答案 1 :(得分:0)

约翰是对的。您可以使用countoffset参数与返回的第一个对象的json中的值totalEstimatedMatches一起使用。

示例: 想象一下,您非常喜欢橡皮鸭,以至于您希望每个网页都包含“橡皮鸭”这个词。那么幸运的是,那不是互联网的运作方式。不要自杀但是,Bing知道很多关于含有“橡皮鸭”的网页,而你需要做的就是通过Bing知道并且欢欣鼓舞的'橡皮鸭'相关网站进行分页。

  • 首先,我们需要通过将'rubber-ducky'传递给它来告诉API我们想要“一些”结果(“some”的值由count param定义,50是最大)。

  • 接下来,我们需要查看返回的第一个JSON对象;这将告诉我们Bing在一个名为totalEstimatedMatches的字段中知道多少'橡皮鸭'网站。

  • 由于我们对与橡皮鸭相关的网站有着永不满足的渴望,我们将设置一个while循环来替换b / w查询和递增offset并且直到totalEstimatedMatches和偏移量相距count

以下是一些用于澄清的python代码:

>>> import SomeMagicalSearcheInterfaceThatOnlyNeeds3Params as Searcher
>>> 
>>> SearcherInstance = Searcher()
>>> SearcherInstance.q = 'rubber-ducky'
>>> SearcherInstance.count = 50
>>> SearcherInstance.offset = 0
>>> SearcherInstance.totalEstimatedMatches = 0
>>> 
>>> print SearcherInstance.preview_URL
'https://api.cognitive.microsoft.com/bing/v5.0/images/search?q=rubber%2Dducky&count=50&offset=0'
>>> 
>>> json_return_object = SearcherInstance.search_2_json()
>>> 
>>> ## Python just treats JSON as nested dictionaries.
>>> tem = json_return_object['webPages']['totalEstimatedMatches']
>>> print tem
9500000
>>> num_links_returned = len(json_return_object['webPages']['value'])
>>> print num_links_returned
50
>>> 
>>> ## We'll set some vals manually then make our while loop.
>>> SearcherInstance.offset += num_links_returned
>>> SearcherInstance.totalEstimatedMatches = tem
>>>
>>> a_dumb_way_to_store_this_much_data = []
>>>     
>>> while SearcherInstance.offset < SearcherInstance.totalEstimatedMatches:
>>>     json_response = SearcherInstance.search_2_json()
>>>     a_dumb_way_to_store_this_much_data.append(json_response)
>>>     
>>>     actual_count = len(json_return_object['webPages']['value'])
>>>     SearcherInstance.offset += min(SearcherInstance.count, actual_count)

希望这有点帮助。