[PYTHON] Bildersammlung mit der benutzerdefinierten Such-API von Google

Von nun an möchte ich Deep Learning ernsthaft studieren. Vorher müssen wir uns überlegen, wo wir die große Datenmenge erhalten, die zum Lernen benötigt wird.

Eine der Methoden, die ich mir ausgedacht habe, ist das Sammeln von Bildern vom Twitter-Bildbot. Die andere verwendet Bildsuchmaschinen wie Google und Bing. Es wird einige Zeit dauern, einen guten Bot zu finden. Verwenden wir also zuerst die Such-API. Die Bing-Such-API scheint Ende dieses Jahres zu enden, daher werde ich dieses Mal Google wählen.

Suchmaschineneinstellungen

Erstellen Sie eine neue Suchmaschine mit Benutzerdefinierte Suche. Die Einstellungen sind wie folgt.

キャプチャ.JPG ① Aktivieren Sie die Bildsuche ② Wählen Sie "Das gesamte Web durchsuchen". ③ Löschen Sie die Suchseite ④ ID von Suchmaschinen-ID abrufen Die ID ist vom Typ "Zahlenzeichenfolge: alphabetische Zeichenfolge". Es scheint, dass die Zahlenzeichenfolge die Benutzer-ID und die alphabetische Zeichenfolge die Engine-ID ist.

Erwerben Sie eine benutzerdefinierte Such-API

Aktivieren Sie die benutzerdefinierte Such-API in der Google Cloud Platform Console (https://console.cloud.google.com/apis) und erstellen Sie einen API-Schlüssel mit Ihren Anmeldeinformationen. 222.JPG

Erstellen eines Python-Skripts

https://www.googleapis.com/customsearch/v1?key=[API_KEY]&cx=[CUSTOM_SEARCH_ENGINE]&q=[search_item]

Sie können mit suchen. Fügen Sie searchType = image hinzu, um nach Bildern zu suchen. num = xx & start = yy ist eine Seitennation, um eine große Anzahl von Bildern zu erhalten. Laut der Referenz (https://developers.google.com/custom-search/json-api/v1/reference/cse/list?hl=ja) ist num eine Ganzzahl von 1 bis 10. Mit anderen Worten, Sie können bis zu 10 gleichzeitig suchen.

Das Skript basiert auf tukiyo3s Code.

get_image.py


#-*- coding:utf-8 -*-
#[email protected] 2016/11/21
import urllib.request
from urllib.parse import quote
import httplib2
import json 
import os

API_KEY = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
CUSTOM_SEARCH_ENGINE = "12345648954985648968:xxxxxxxxx"

def getImageUrl(search_item, total_num):
 img_list = []
 i = 0
 while i < total_num:
  query_img = "https://www.googleapis.com/customsearch/v1?key=" + API_KEY + "&cx=" + CUSTOM_SEARCH_ENGINE + "&num=" + str(10 if(total_num-i)>10 else (total_num-i)) + "&start=" + str(i+1) + "&q=" + quote(search_item) + "&searchType=image"
  print (query_img)
  res = urllib.request.urlopen(query_img)
  data = json.loads(res.read().decode('utf-8'))
  for j in range(len(data["items"])):
   img_list.append(data["items"][j]["link"])
  i=i+10
 return img_list
 
def getImage(search_item, img_list):
 opener = urllib.request.build_opener()
 http = httplib2.Http(".cache")
 for i in range(len(img_list)):
  try:
   fn, ext = os.path.splitext(img_list[i])
   print(img_list[i])
   response, content = http.request(img_list[i])
   with open(search_item+str(i)+ext, 'wb') as f:
    f.write(content)
  except:
   print("failed to download images.")
   continue

if __name__ == "__main__":
 img_list = getImageUrl("Hund", 5)
 print(img_list)
 getImage("dog", img_list)

Der Code ist nicht so hübsch, aber ich werde ihn teilen. Ich habe es auch in Github eingefügt.

Ende

Die benutzerdefinierte Such-API von Google ist praktisch, aber die kostenlose Nutzungsstufe beträgt 100 Anfragen pro Tag, und ich habe 70% nur zum Testen des Skripts verwendet. Wenn Sie es tatsächlich benutzen, müssen Sie dafür bezahlen. Schließlich möchte ich Bilder kostenlos sammeln, also werde ich einige andere Methoden ausprobieren (wie z. B. Twitter).

Update 2016/11/24 Ich habe einen guten Weg gefunden, um Bilder zu sammeln! ↓ http://d.hatena.ne.jp/shi3z/20160309/1457480722 Das Python-Skript im obigen Link wurde geändert, um Python3 zu unterstützen. → GitHub

Recommended Posts

Bildersammlung mit der benutzerdefinierten Such-API von Google
Sammeln Sie selbst Bilddaten für maschinelles Lernen (Google Custom Search API Pikachu).
Sammeln Sie eine große Anzahl von Bildern mit der Bildsuch-API von Bing
Rufen Sie die Bing Image Search API v5 von Python auf, um Bilder zu sammeln
[Python3] Google übersetzt Google Übersetzung ohne Verwendung von API
Erstellen Sie eine Anwendung, die nur mit der Google Custom Search-API mit Python 3.3.1 in Bottle sucht
Kategorieschätzung mit der Bilderkennungs-API von docomo
Sprachtranskriptionsverfahren mit der Google Cloud Speech API
Speichern Sie das Hundebild aus der Google-Bildsuche
Bildsegment mit Oxford_iiit_pet in Google Colab
Erstellen einer Google-Tabelle mit der Python / Google Data-API
FX-Datenerfassung mit der OANDA REST-API
Zeichnen Sie benutzerdefinierte Ereignisse mit der Shotgun-API auf
[Python] Laden Sie das Originalbild von der Google Bildsuche herunter
Holen Sie sich die Bild-URL mithilfe der Flickr-API in Python
Bildersammelmethode
Ich habe versucht, die Google Cloud Vision-API zu verwenden
Holen Sie sich Bilder der Google Bildsuche in Originalgröße
Integration von Google App Engine-Datenspeicher und Such-API
[GoogleCloudPlatform] Verwenden Sie die Google Cloud-API mit der API-Clientbibliothek
Eine Geschichte über einen Python-Anfänger, der versucht, Google-Suchergebnisse mithilfe der API abzurufen
Laden Sie eine JPG-Datei mit der Google Drive-API in Python hoch
Analysieren mit Google Colaboratory mithilfe der Kaggle-API
Sprachtranskriptionsverfahren mit Python und Google Cloud Speech API
Verwenden Sie die Such-API der National Parliament Library in Python
Sprachdateierkennung durch Google Speech API v2 mit Python
Bildsegmentierung mit U-Net
Suchen Sie Twitter mit Python
Ich habe versucht, Videos mit der Youtube Data API (Anfänger) zu suchen.
Bilderkennung mit API aus null Wissen mit AutoML Vision
Probieren Sie die ähnliche Suche von Image Search mit Python SDK [Search] aus.
[Python Scraping] Ich habe versucht, Google Search Top10 mit Beautifulsoup & Selenium
Versuchen Sie, Lebensmittelfotos mithilfe der Google Cloud Vision-API zu beurteilen
Lassen Sie uns die Super Resolution API mithilfe der Google Cloud Platform veröffentlichen
Die Geschichte des Erstellens einer Datenbank mithilfe der Google Analytics-API
Ausgabe von Produktinformationen an csv mithilfe der Rakuten-Produktsuch-API [Python]
Aggregieren und analysieren Sie Produktpreise mit der Rakuten Product Search API [Python]
Spielen Sie mit der YouTube Data API v3 mit dem Google API Python Client