2016-11-16 4 views
2

Ich arbeite an der Migration meiner Web-Site von der Bing Azure API (v2) zur neuen Bing V5 Such-API.
Auf der alten API, ein Objekt verwenden Sie diese "__next", um zu sagen, ob etwas anderes nach ihm ist oder nicht.
Aber auf der neuen API gibt das JSON das nicht mehr zurück.
Ich arbeite an der Aktualisierung meiner Seitennummerierung und ich weiß nicht, wie es ohne dieses Element geht.
Wer weiß, was diese in der neuen API ersetzen?
Ich kann keine Informationen in ihrer Migrationsanleitung oder im neuen V5-API-Handbuch finden.
Danke.bing search api v5 "__next" ersatz?

Antwort

0

John hat Recht. Sie verwenden die count und offset Parameter in Verbindung mit der totalEstimatedMatches aus dem Wert in der JSON des ersten zurückgegebenen Objekts.

Beispiel: Stellen Sie sich vor Sie lieben Gummi-Duckies so sehr, dass Sie jede einzelne Webseite in existance wollen, die den Begriff ‚Gummi-Entchen‘. GUTES TOUGH GLÜCK BC DAS IST NICHT, WIE DAS INTERNET FUNKTIONIERT. Töte dich noch nicht, aber Bing weiß viel über Webseiten mit "Rubber-Ducky", und alles, was du tun musst, ist das Paginieren durch die "Rubber-Ducky" -bezogenen Seiten, von denen Bing weiß und sich freut.

  • Zuerst müssen wir den API sagen, dass wir wollen, „einige“ Ergebnissen, indem man ‚Gummi-Entchen‘, um es (den Wert von „etwas“ von dem count param definiert ist, 50 ist der max) .

  • Als nächstes müssen wir in das erste zurückgegebene JSON-Objekt suchen; Das wird uns sagen, wie viele 'Rubber-Ducky'-Sites, die Bing in einem Feld namens totalEstimatedMatches kennt.

  • Da wir ein unersättlicher Hunger nach Gummi-Entchen-Websites haben, werden wir eine while-Schleife einrichten, die b alterniert/w Abfragen und offset Erhöhen und dass erst totalEstimatedMatches und Offset stoppt sind count Abstand voneinander.

Hier einige Python-Code zur Klarstellung:

>>> 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) 

Hope this hilft ein wenig.