[Java] Holen Sie sich Bilder mit der Google Custom Search API

Dinge notwendig

· API-Schlüssel ・ Suchmaschinen-ID Beides erhalten Sie beim Aktivieren der benutzerdefinierten Google-Such-API.

Referenzseite

Dieser Artikel war hilfreich, um den API-Schlüssel und die Suchmaschinen-ID abzurufen. Google-Suchergebnisse mithilfe der benutzerdefinierten Such-API abrufen

Klicken Sie hier für die Bildsuche. Bildersammlung mit der benutzerdefinierten Google-Such-API

Quellcode

Laden Sie 10 Bilder aus den Suchergebnissen herunter. Das Speicherziel wird im Download-Ordner angegeben.

CustomSearch.java


import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

public class CustomSearch {

	public static void main(String[] args) throws IOException {
		String key = "API-Schlüssel";
		String cx = "Suchmaschinen-ID";
		String qry = "Zeichen, das Sie suchen möchten";
		String link = null;
		List<String> linkList = new ArrayList<String>();

		//Stellen Sie eine Anfrage an die Google Custom Search API
		URL url = new URL(
				"https://www.googleapis.com/customsearch/v1?key=" + key + "&cx=" + cx + "&q=" + qry
						+ "&searchType=image");
		HttpURLConnection conn = (HttpURLConnection) url.openConnection();
		conn.setRequestMethod("GET");
		conn.setRequestProperty("Accept", "application/json");
		BufferedReader br = new BufferedReader(new InputStreamReader(
				(conn.getInputStream())));

		//Die Antwort ist json
		//Der Prozess des Findens der URL von json
		String output;
		System.out.println("Output from Server .... \n");
		while ((output = br.readLine()) != null) {

			if (output.contains("\"link\": \"")) {

				link = output.substring(output.indexOf("\"link\": \"") + ("\"link\": \"").length(),
						output.indexOf("\","));
				System.out.println(link);
				linkList.add(link);
			}
		}
		conn.disconnect();

	    //Der Vorgang des Herunterladens eines Bildes von einer URL.
		URL imageURL = null;
		HttpURLConnection urlConnection = null;

		for (int i = 0; i < 10; i++) {

			try {
				imageURL = new URL(linkList.get(i));

				urlConnection = (HttpURLConnection) imageURL.openConnection();
				//Wenn dies der Fall ist, lassen Sie die Umleitung zu
				urlConnection.setInstanceFollowRedirects(true);
			} catch (MalformedURLException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}

			//InputStream ist eine Oberklasse aller Klassen, die Byte-Eingabestreams darstellen.
			InputStream in = null;

			try {
				in = urlConnection.getInputStream();
			} catch (IOException e) {
				e.printStackTrace();
			}

			byte[] buf = new byte[4096];
			int readSize;
			int total = 0;
			try {

				FileOutputStream fos = new FileOutputStream("C:\\Users\\user\\Downloads\\" + "test" + i + ".jpg ");

				//Die Lesemethode hat einen Wert, wenn keine zu lesenden Bytes vorhanden sind, da der Stream das Ende der Datei erreicht hat-1 wird zurückgegeben.
				//Das erste gelesene Byte ist Element b[0]Das nächste Byte ist b[1]Es wird in gespeichert und so weiter.
				//Die maximale Anzahl von Bytes, die gelesen werden können, entspricht der Länge von b.
				while (((readSize = in.read(buf)) != -1)) {
					total = total + readSize;

					//Schreibt readSize-Bytes ab der Offset-Position 0 des angegebenen Byte-Arrays in diesen Dateiausgabestream.
					fos.write(buf, 0, readSize);
				}
				fos.flush();
				fos.close();
				in.close();
			} catch (FileNotFoundException e) {
				System.out.println("Dateifehler");
			} catch (IOException e) {
				e.printStackTrace();
			}

			System.out.println("Size:" + total);
		}
	}
}

Wie es funktioniert

Wirf das Suchzeichen als Anfrage an die API. Eine Antwort wird mit JSON-Daten zurückgegeben. Suchen Sie die URL des Bildes aus den JSON-Daten. Dann verbinden Sie sich mit der URL und laden Sie herunter! nur das!

Recommended Posts

[Java] Holen Sie sich Bilder mit der Google Custom Search API
Verwenden Sie Java 11 mit Google Cloud-Funktionen
Arbeiten Sie mit Google-Tabellen aus Java
[Java] Listen- / Kartenelemente mit Iterator abrufen
[Java] Json von der URL mit der Standard-API (javax.script) abrufen und verarbeiten
Einführung in Algorithmen mit Java-Suche (Tiefenprioritätssuche)
Beim Aufrufen der API mit Java tritt eine javax.net.ssl.SSLHandshakeException auf
Holen Sie sich Zeitstempel mit dem Azure BlobStorage Java SDK
[Rails] Buchsuche mit Amazon PA API
[Java] Neue Spezifikation Implementierung der Yahoo! -Produktsuch-API
[Java8] Durchsuchen Sie das Verzeichnis und holen Sie sich die Datei
[Java] Ermitteln Sie das Datum mit der LocalDateTime-Klasse
Einführung in Algorithmen mit Java --Search (Breitenprioritätssuche)
[Android] [Java] Laden Sie Bilder auf GCS (Google Cloud Storage) mit Stream mit Glide herunter
Interagieren Sie mit der LINE Message API mit Lambda (Java)
[Java] Erstellen Sie so etwas wie eine Produktsuch-API
Blockinformationen erhalten Sie mit dem Java SDK von Hyperledger Iroha
Verwendung der Java-API mit Lambda-Ausdrücken
Versuchen Sie, den API-Schlüssel von Redmine mit Ruby zu erhalten
Holen Sie sich Daten mit der API, die mit dem Befehl curl erstellt wurde
Implementieren Sie die Suchfunktion mit der Rakuten Books (DVD) API
Docker Container Operations mit Docker-Client API für Java
[LeJOS] EV3-Sensorwert per Fernzugriff mit Java abrufen
Kommen Sie mit Java-Containern in Cloud Run zurecht
Java Stream API
Erfahrene Java-Benutzer beginnen mit der Entwicklung von Android-Apps
Suche nach POST-Anforderung mit Azure Search + Java Apache HttpClient
Rufen Sie den Azure App Service für die Java-Konfiguration mit System.getEnv () ab.
[Java] Holen Sie sich das Datum 10 Tage später mit der Calendar-Klasse
[Java] Ich habe versucht, die Yahoo API-Produktsuche zu implementieren
Legen Sie mit hocalhost Referrer-Grenzwerte für die Google Vision-API fest
Beginnen Sie mit serverlosem Java mit dem leichtgewichtigen Framework Micronaut!
Greifen Sie mit Get on Android auf die Web-API zu und verarbeiten Sie Json (vorerst Java).