Quickstart: Afbeeldingen zoeken met de REST API voor Bing Image Search en Python
Waarschuwing
Op 30 oktober 2020 zijn de Zoeken in Bing API's verplaatst van Azure AI-services naar Zoeken in Bing Services. Deze documentatie is alleen bedoeld ter referentie. Zie de bing zoek-API-documentatie voor bijgewerkte documentatie. Zie Een Zoeken in Bing resource maken via de Azure Marketplace voor instructies voor het maken van nieuwe Azure-resources voor Bing Search.
Gebruik deze quickstart om te leren hoe u zoekaanvragen verzendt naar de Bing Image Search-API. Deze Python-toepassing verzendt een zoekquery naar de API en geeft de URL weer van de eerste afbeelding in de resultaten. Hoewel deze toepassing in Python is geschreven, is de API een RESTful-webservice die compatibel is met vrijwel elke programmeertaal.
Vereisten
De toepassing maken en initialiseren
Maak een nieuw Python-bestand in uw favoriete IDE of editor en importeer de volgende modules. Maak variabelen voor uw abonnementssleutel, zoekeindpunt en een zoekterm. Voor
search_url
kunt u het volgende globale eindpunt of het eindpunt aangepaste subdomein gebruiken dat wordt weergegeven in Azure Portal voor uw resource.import requests import matplotlib.pyplot as plt from PIL import Image from io import BytesIO subscription_key = "your-subscription-key" search_url = "https://api.cognitive.microsoft.com/bing/v7.0/images/search" search_term = "puppies"
Voeg uw abonnementssleutel toe aan de koptekst
Ocp-Apim-Subscription-Key
door een woordenlijst te maken en de sleutel als een waarde toe te voegen.headers = {"Ocp-Apim-Subscription-Key" : subscription_key}
Een zoekaanvraag maken en verzenden
Maak een woordenlijst voor de parameters van de zoekaanvraag. Voeg de zoekterm toe aan de
q
-parameter. Stel delicense
-parameter in oppublic
om te zoeken naar afbeeldingen in het openbare domein. Stel deimageType
in opphoto
om alleen te zoeken naar foto's.params = {"q": search_term, "license": "public", "imageType": "photo"}
Gebruik de
requests
-bibliotheek voor het aanroepen van de Bing Image Search-API. Voeg uw koptekst en parameters toe aan de aanvraag en retourneer de reactie als een JSON-object. Haal de URL's op in verschillende miniatuurafbeeldingen van hetthumbnailUrl
-veld van het antwoord.response = requests.get(search_url, headers=headers, params=params) response.raise_for_status() search_results = response.json() thumbnail_urls = [img["thumbnailUrl"] for img in search_results["value"][:16]]
Bekijk het antwoord
Maak een nieuwe afbeelding met vier kolommen en vier rijen met behulp van de bibliotheek matplotlib.
Doorloop de rijen en kolommen van de afbeelding en gebruik de methode
Image.open()
van de PIL-bibiotheek om een miniatuur van de afbeelding toe te voegen aan elke ruimte.Gebruik
plt.show()
voor het tekenen van de afbeelding en om de afbeeldingen weer te geven.f, axes = plt.subplots(4, 4) for i in range(4): for j in range(4): image_data = requests.get(thumbnail_urls[i+4*j]) image_data.raise_for_status() image = Image.open(BytesIO(image_data.content)) axes[i][j].imshow(image) axes[i][j].axis("off") plt.show()
Voorbeeld van JSON-antwoord
Antwoorden die afkomstig zijn van de Bing Afbeeldingen zoeken-API, worden geretourneerd in de JSON-indeling. Dit voorbeeldantwoord is ingekort zodat één resultaat wordt weergegeven.
{
"_type":"Images",
"instrumentation":{
"_type":"ResponseInstrumentation"
},
"readLink":"images\/search?q=tropical ocean",
"webSearchUrl":"https:\/\/www.bing.com\/images\/search?q=tropical ocean&FORM=OIIARP",
"totalEstimatedMatches":842,
"nextOffset":47,
"value":[
{
"webSearchUrl":"https:\/\/www.bing.com\/images\/search?view=detailv2&FORM=OIIRPO&q=tropical+ocean&id=8607ACDACB243BDEA7E1EF78127DA931E680E3A5&simid=608027248313960152",
"name":"My Life in the Ocean | The greatest WordPress.com site in ...",
"thumbnailUrl":"https:\/\/tse3.mm.bing.net\/th?id=OIP.fmwSKKmKpmZtJiBDps1kLAHaEo&pid=Api",
"datePublished":"2017-11-03T08:51:00.0000000Z",
"contentUrl":"https:\/\/mylifeintheocean.files.wordpress.com\/2012\/11\/tropical-ocean-wallpaper-1920x12003.jpg",
"hostPageUrl":"https:\/\/mylifeintheocean.wordpress.com\/",
"contentSize":"897388 B",
"encodingFormat":"jpeg",
"hostPageDisplayUrl":"https:\/\/mylifeintheocean.wordpress.com",
"width":1920,
"height":1200,
"thumbnail":{
"width":474,
"height":296
},
"imageInsightsToken":"ccid_fmwSKKmK*mid_8607ACDACB243BDEA7E1EF78127DA931E680E3A5*simid_608027248313960152*thid_OIP.fmwSKKmKpmZtJiBDps1kLAHaEo",
"insightsMetadata":{
"recipeSourcesCount":0,
"bestRepresentativeQuery":{
"text":"Tropical Beaches Desktop Wallpaper",
"displayText":"Tropical Beaches Desktop Wallpaper",
"webSearchUrl":"https:\/\/www.bing.com\/images\/search?q=Tropical+Beaches+Desktop+Wallpaper&id=8607ACDACB243BDEA7E1EF78127DA931E680E3A5&FORM=IDBQDM"
},
"pagesIncludingCount":115,
"availableSizesCount":44
},
"imageId":"8607ACDACB243BDEA7E1EF78127DA931E680E3A5",
"accentColor":"0050B2"
}]
}