[Java] Obtenez des images avec l'API Google Custom Search

Les choses nécessaires

· Clé API ・ ID du moteur de recherche Les deux peuvent être obtenus lors de l'activation de l'API Google Custom Search.

Site de référence

Cet article a été utile pour obtenir la clé API et l'ID du moteur de recherche. Obtenez les résultats de recherche Google à l'aide de l'API de recherche personnalisée

Cliquez ici pour la recherche d'images. Collection d'images à l'aide de l'API de recherche personnalisée Google

Code source

Téléchargez 10 images à partir des résultats de la recherche. La destination d'enregistrement est spécifiée dans le dossier de téléchargement.

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 = "Clé API";
		String cx = "ID du moteur de recherche";
		String qry = "Caractère que vous souhaitez rechercher";
		String link = null;
		List<String> linkList = new ArrayList<String>();

		//Faire une demande à l'API de recherche personnalisée Google
		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())));

		//La réponse est json
		//Le processus de recherche de l'URL de 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();

	    //Processus de téléchargement d'images à partir d'une 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();
				//Si vrai, autoriser la redirection
				urlConnection.setInstanceFollowRedirects(true);
			} catch (MalformedURLException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}

			//InputStream est une superclasse de toutes les classes qui représentent des flux d'entrée d'octets.
			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 ");

				//La méthode read a une valeur s'il n'y a pas d'octets à lire car le flux a atteint la fin du fichier-1 est renvoyé.
				//Le premier octet lu est l'élément b[0]Stocké dans, l'octet suivant est b[1]Il est stocké dans, et ainsi de suite.
				//Le nombre maximum d'octets pouvant être lus est le même que la longueur de b.
				while (((readSize = in.read(buf)) != -1)) {
					total = total + readSize;

					//Écrit les octets readSize à partir de la position de décalage 0 du tableau d'octets spécifié dans ce flux de sortie de fichier.
					fos.write(buf, 0, readSize);
				}
				fos.flush();
				fos.close();
				in.close();
			} catch (FileNotFoundException e) {
				System.out.println("Erreur de fichier");
			} catch (IOException e) {
				e.printStackTrace();
			}

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

Comment ça fonctionne

Lancez le caractère de recherche en tant que requête à l'API. Une réponse est renvoyée avec des données json. Recherchez l'URL de l'image à partir des données json. Ensuite, connectez-vous à l'URL et téléchargez! seulement ça!

Recommended Posts

[Java] Obtenez des images avec l'API Google Custom Search
Utiliser Java 11 avec Google Cloud Functions
Travailler avec des feuilles de calcul Google à partir de Java
[Java] Obtenir des éléments List / Map avec Iterator
[Java] Obtenir et gérer Json à partir d'une URL avec une API standard (javax.script)
Introduction aux algorithmes avec java-Search (recherche prioritaire en profondeur)
Lors de l'appel de l'API avec java, javax.net.ssl.SSLHandshakeException se produit
Obtenez des horodatages avec le SDK Java Azure BlobStorage
[Rails] Recherche de livres avec l'API Amazon PA
[Java] Nouvelle spécification Implémentation de l'API de recherche de produits Yahoo!
[Java8] Recherchez le répertoire et récupérez le fichier
[Java] Obtenez la date avec la classe LocalDateTime
Introduction aux algorithmes avec java --Search (recherche de priorité de largeur)
[Android] [Java] Télécharger des images sur GCS (Google Cloud Storage) avec Stream à l'aide de Glide
Interagir avec l'API de message LINE à l'aide de Lambda (Java)
[Java] Créez quelque chose comme une API de recherche de produits
Résumé Il n'y a rien de particulier. Dois-je y prêter attention? .. .. J'ai ressenti cela, alors j'ai écrit un article. Si vous avez des commentaires, veuillez. Obtenez des informations de bloc avec le SDK Java de Python, Python3, Glossy Hyperledger Iroha
Comment utiliser l'API Java avec des expressions lambda
Essayez d'obtenir la clé API de redmine avec ruby
Obtenez des données avec une API créée par la commande curl
Mettre en œuvre la fonction de recherche avec l'API Rakuten Books (DVD)
Opérations de conteneur Docker avec l'API Docker-Client pour Java
[LeJOS] Obtenez la valeur du capteur EV3 à distance avec Java
S'entendre avec les conteneurs Java dans Cloud Run
API Java Stream
Les utilisateurs Java expérimentés se lancent dans le développement d'applications Android
Recherche par requête POST avec Azure Search + Java Apache HttpClient
Obtenez la configuration Azure App Service pour Java avec System.getEnv ()
[Java] Obtenez la date 10 jours plus tard avec la classe Calendar
[Java] J'ai essayé de mettre en œuvre la recherche de produits de l'API Yahoo
Définir des limites de référent sur l'API Google Vision avec Hocalhost
Commencez avec Java sans serveur avec le framework léger Micronaut!
Accédez à l'API Web avec Get sur Android et traitez Json (Java pour le moment)