我正在将我的网站从Bing Azure API(v2)迁移到新的Bing V5搜索API。
在旧的API上,一个对象使用这个" __ next"判断他之后是否还有别的东西
但是在新的API上,json不再返回它了
我正在努力升级我的分页,如果没有这个元素,我就不知道怎么做。
任何人都知道在新的API中替换它的是什么?
我无法在其迁移指南或新的V5 API指南中找到任何信息
感谢。
答案 0 :(得分:0)
您应该在首次调用API时阅读totalEstimatedMatches值,然后使用& count和& offset参数来浏览结果,如下所述:https://msdn.microsoft.com/en-us/library/dn760787.aspx。
答案 1 :(得分:0)
约翰是对的。您可以使用count
和offset
参数与返回的第一个对象的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)
希望这有点帮助。