· 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!