Início Rápido: pesquisar imagens usando a API REST de Pesquisa de Imagem do Bing e Python
Aviso
Em 30 de outubro de 2020, as APIs de Pesquisa do Bing foram migradas dos serviços de IA do Azure para os Serviços de Pesquisa do Bing. Esta documentação é fornecida apenas para referência. Para obter a documentação atualizada, consulte a documentação da API de pesquisa do Bing. Para obter instruções sobre como criar novos recursos do Azure para a Pesquisa do Bing, consulte Criar um recurso de Pesquisa do Bing por meio do Azure Marketplace.
Use este guia de início rápido para aprender a enviar solicitações de pesquisa para a API da Pesquisa de Imagem do Bing. Esse aplicativo Python envia uma consulta de pesquisa para a API e exibe a URL da primeira imagem nos resultados. Embora esse aplicativo seja escrito em Python, a API é um serviço Web RESTful compatível com a maioria das linguagens de programação.
Pré-requisitos
Criar e inicializar o aplicativo
Crie um novo arquivo do Python em seu IDE ou editor favorito e importe os módulos a seguir. Crie uma variável para a chave de assinatura, um ponto de extremidade de pesquisa e um termo de pesquisa. Para
search_url
, você pode usar o ponto de extremidade global no código a seguir ou usar o ponto de extremidade do subdomínio personalizado exibido no portal do Azure para seu recurso.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"
Adicione sua chave de assinatura ao cabeçalho
Ocp-Apim-Subscription-Key
criando um dicionário e adicionando a chave como um valor.headers = {"Ocp-Apim-Subscription-Key" : subscription_key}
Criar e enviar uma solicitação de pesquisa
Crie um dicionário para os parâmetros da solicitação de pesquisa. Adicione o termo de pesquisa ao parâmetro
q
. Defina o parâmetrolicense
comopublic
para pesquisar imagens no domínio público. DefinaimageType
comophoto
para pesquisar apenas fotos.params = {"q": search_term, "license": "public", "imageType": "photo"}
Use a biblioteca
requests
para chamar a API de Pesquisa de Imagem do Bing. Adicione o cabeçalho e os parâmetros à solicitação e retorne a resposta como um objeto JSON. Obtenha as URLs para várias imagens em miniatura do campothumbnailUrl
da resposta.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]]
Exibir a resposta
Crie uma figura com quatro colunas e quatro linhas usando a biblioteca matplotlib.
Itere nas linhas e colunas da figura e use o método
Image.open()
da biblioteca PIL para adicionar uma miniatura de imagem a cada espaço.Use
plt.show()
para desenhar a figura e exibir as imagens.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()
Resposta JSON de exemplo
As respostas da API de Pesquisa de Imagem do Bing são retornadas como JSON. Este exemplo de resposta foi truncado para mostrar um único resultado.
{
"_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"
}]
}