· Clé API ・ ID du moteur de recherche Les deux peuvent être obtenus lors de l'activation de l'API Google Custom Search.
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
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);
		}
	}
}
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!