Hızlı Başlangıç: Bing Resim Arama REST API'sini ve Python'ı kullanarak görüntü arama
Uyarı
30 Ekim 2020'de Bing Arama API'leri Azure yapay zeka hizmetlerinden Bing Arama Hizmetlerine taşındı. Bu belgeler yalnızca başvuru için sağlanır. Güncelleştirilmiş belgeler için Bing arama API'sinin belgelerine bakın. Bing araması için yeni Azure kaynakları oluşturma yönergeleri için bkz. Azure Market aracılığıyla Bing Arama kaynağı oluşturma.
Bing Resim Arama API'sine arama isteği göndermeyi öğrenmek için bu hızlı başlangıcı kullanın. Bu Python uygulaması API'ye bir arama sorgusu gönderir ve sonuçlarda ilk görüntünün URL'sini görüntüler. Bu uygulama Python'da yazılmış olsa da, API çoğu programlama diliyle uyumlu bir RESTful web hizmetidir.
Önkoşullar
Uygulamayı oluşturma ve başlatma
Sık kullandığınız IDE veya düzenleyicide yeni bir Python dosyası oluşturun ve aşağıdaki modülleri içeri aktarın. Abonelik anahtarınız, arama uç noktanız ve arama teriminiz için bir değişken oluşturun. için
search_url
, aşağıdaki kodda genel uç noktayı kullanabilir veya kaynağınız için Azure portal görüntülenen özel alt etki alanı uç noktasını kullanabilirsiniz.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"
Bir sözlük oluşturup anahtarı değer olarak ekleyerek abonelik anahtarınızı
Ocp-Apim-Subscription-Key
üst bilgisine ekleyin.headers = {"Ocp-Apim-Subscription-Key" : subscription_key}
Arama isteği oluşturma ve gönderme
Arama isteğinin parametreleri için bir sözlük oluşturun. Arama teriminizi parametresine
q
ekleyin.license
Genel etki alanındaki görüntüleri aramak için parametresinipublic
olarak ayarlayın.imageType
photo
yalnızca fotoğrafları aramak için olarak ayarlayın.params = {"q": search_term, "license": "public", "imageType": "photo"}
requests
Bing Resim Arama API'sini çağırmak için kitaplığı kullanın. üst bilginizi ve parametrelerinizi isteğe ekleyin ve yanıtı JSON nesnesi olarak döndürin. Yanıtın alanından birkaç küçük resim görüntüsünün URL'lerinithumbnailUrl
alın.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]]
Yanıtı görüntüleme
matplotlib kitaplığını kullanarak dört sütun ve dört satır içeren yeni bir şekil oluşturun.
Şeklin satır ve sütunlarını yineleyin ve her alana bir resim küçük resmi eklemek için PIL kitaplığının
Image.open()
yöntemini kullanın.Şekli çizmek ve görüntüleri görüntülemek için kullanın
plt.show()
.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()
Örnek JSON yanıtı
Bing Resim Arama API'sinden yanıtlar JSON olarak döndürülür. Bu örnek yanıt, tek bir sonuç göstermek için kısaltıldı.
{
"_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"
}]
}