Extraire des images d'un site Web en Java

Si vous êtes développeur web, graphiste, chercheur, journaliste, étudiant ou si vous travaillez simplement sur un projet personnel, vous aurez probablement besoin d’images et de la possibilité de les collecter à partir de sites web. L’enregistrement manuel des images – en copiant chaque URL et en les téléchargeant une par une – peut prendre beaucoup de temps et s’avérer inefficace. Cependant, vous pouvez utiliser la bibliothèque Aspose.HTML for Java library pour automatiser ce processus et extraire des images d’un site web par programme.

Cet article explique comment extraire par programmation différents types d’images d’un site web à l’aide de Java. Avec Aspose.HTML for Java, vous pouvez facilement créer un outil qui analyse une page HTML, identifie les sources d’images et télécharge ces images. Il s’agit d’une solution puissante pour tous ceux qui ont besoin de collecter des images à des fins d’analyse, d’archivage ou de création de contenu, sans avoir à le faire manuellement.

Extraire des images d’un site Web

La plupart des images d’un document HTML sont représentées à l’aide de l’élément <img>. L’extrait de code suivant montre comment utiliser Aspose.HTML for Java pour trouver les images spécifiées par cet élément. Ainsi, pour télécharger des images à partir d’un site web, vous devez suivre les étapes suivantes :

  1. Utilisez le constructeur HTMLDocument(Url) pour créer une instance de HTMLDocument en lui transmettant l’URL de la page web à traiter.
  2. Appelez la méthode getElementsByTagName(“img”) pour récupérer tous les éléments <img> du document. La méthode renvoie une collection d’éléments <img> présents sur la page.
  3. Interrogez les éléments <img> et utilisez la méthode getAttribute(“src”) pour obtenir la valeur de l’attribut src de chaque image. Chaque src est ajouté à l’ensemble urls.
  4. Utilisez la classe Url avec la propriété BaseURI du document pour convertir les chemins d’accès relatifs aux images en URL absolues.
  5. Pour chaque URL d’image absolue, créez une requête en utilisant le constructeur RequestMessage(url) et envoyez-la en utilisant document.getContext().getNetwork().send(request). Cela renvoie un MessageRéponse.
  6. Si la réponse indique un succès, extrayez les données de l’image en utilisant response.getContent().readAsByteArray() et enregistrez-les sur votre système de fichiers local en utilisant FileHelper.writeAllBytes().
 1// Open a document you want to download images from
 2final HTMLDocument document = new HTMLDocument("https://docs.aspose.com/svg/net/drawing-basics/svg-shapes/");
 3
 4// Collect all <img> elements
 5HTMLCollection images = document.getElementsByTagName("img");
 6
 7// Create a distinct collection of relative image URLs
 8Iterator<Element> iterator = images.iterator();
 9java.util.Set<String> urls = new HashSet<>();
10for (Element e : images) {
11    urls.add(e.getAttribute("src"));
12}
13
14// Create absolute image URLs
15java.util.List<Url> absUrls = urls.stream()
16    .map(src -> new Url(src, document.getBaseURI()))
17    .collect(Collectors.toList());
18
19// foreach to while statements conversion
20for (Url url : absUrls) {
21    // Create an image request message
22    final RequestMessage request = new RequestMessage(url);
23
24    // Extract image
25    final ResponseMessage response = document.getContext().getNetwork().send(request);
26
27    // Check whether a response is successful
28    if (response.isSuccess()) {
29        String[] split = url.getPathname().split("/");
30        String path = split[split.length - 1];
31
32        // Save file to a local file system
33        FileHelper.writeAllBytes(path, response.getContent().readAsByteArray());
34    }
35}

Cette solution simple et efficace vous permet d’automatiser le processus d’extraction d’images et de gagner un temps précieux.

Note: Respectez toujours les lois sur les droits d’auteur et assurez-vous que vous disposez des autorisations ou licences nécessaires avant d’utiliser les images sauvegardées à des fins commerciales. Nous ne soutenons pas l’extraction et l’utilisation du contenu de sources tierces à des fins commerciales sans autorisation appropriée.

Extraire les icônes d’un site Web

Dans les documents HTML, les icônes sont généralement définies à l’aide d’éléments <link> dotés de l’attribut rel="icon". Pour extraire des icônes d’un site Web à l’aide d’Aspose.HTML for Java, procédez comme suit :

  1. Chargez la page web à l’aide du constructeur HTMLDocument(Url), en indiquant l’URL du site web que vous souhaitez analyser.
  2. Utilisez la méthode getElementsByTagName(“link”) pour collecter tous les éléments <link> du document.
  3. Filtrer les résultats pour n’inclure que les éléments dont l’attribut rel est fixé à "icon", car ils définissent des liens en forme d’icônes.
  4. Extraire les URL relatives en appelant getAttribute(“href”) sur chaque élément <link> filtré.
  5. Créer des URL d’icônes absolues en utilisant la classe Url et la méthode getBaseURI() de HTMLDocument.
  6. Envoyez une requête pour chaque icône en utilisant la classe RequestMessage et la méthode document.getContext().getNetwork().send().
  7. Vérifiez la réponse, et en cas de succès, sauvegardez l’icône localement en utilisant FileHelper.writeAllBytes(). Ainsi, toutes les icônes du site web référencées dans le code HTML seront téléchargées et sauvegardées dans votre système de fichiers local.
 1// Open a document you want to download icons from
 2final HTMLDocument document = new HTMLDocument("https://docs.aspose.com/html/net/message-handlers/");
 3
 4// Collect all <link> elements
 5HTMLCollection links = document.getElementsByTagName("link");
 6
 7// Leave only "icon" elements
 8java.util.Set<Element> icons = new HashSet<>();
 9for (Element link : links) {
10    if ("icon".equals(link.getAttribute("rel"))) {
11        icons.add(link);
12    }
13}
14
15// Create a distinct collection of relative icon URLs
16java.util.Set<String> urls = new HashSet<>();
17for (Element icon : icons) {
18    urls.add(icon.getAttribute("href"));
19}
20
21// Create absolute image URLs
22java.util.List<Url> absUrls = urls.stream()
23    .map(src -> new Url(src, document.getBaseURI()))
24    .collect(Collectors.toList());
25
26// foreach to while statements conversion
27for (Url url : absUrls) {
28    // Create a downloading request
29    final RequestMessage request = new RequestMessage(url);
30
31    // Extract icon
32    final ResponseMessage response = document.getContext().getNetwork().send(request);
33
34    // Check whether a response is successful
35    if (response.isSuccess()) {
36        String[] split = url.getPathname().split("/");
37        String path = split[split.length - 1];
38
39        // Save file to a local file system
40        FileHelper.writeAllBytes(path, response.getContent().readAsByteArray());
41    }
42}

Vous pouvez utiliser ces exemples Java pour automatiser l’extraction de toutes les images d’un site web, ce qui peut être utile pour des tâches telles que l’archivage, la recherche, l’analyse de contenu web ou toute autre application à usage personnel. C’est également très utile pour les concepteurs et les développeurs de sites web qui souhaitent extraire des images de sites sans avoir à plonger dans le code source.

Aspose.HTML propose un ensemble d’ applications Web HTML gratuites en ligne, notamment des convertisseurs, des fusionneurs, des outils de référencement, des générateurs de code HTML, des utilitaires d’URL, et bien d’autres encore. Ces outils basés sur un navigateur fonctionnent sur n’importe quel système d’exploitation et ne nécessitent aucune installation de logiciel supplémentaire. Que vous ayez besoin de convertir ou de fusionner des fichiers, d’extraire des données web, de générer du code HTML ou d’analyser des pages pour le référencement, vous pouvez le faire directement sur le web. Rationalisez vos tâches quotidiennes et augmentez votre productivité grâce à nos HTML Web Apps faciles à utiliser – à tout moment et en tout lieu.

Texte “Applications Web HTML”

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.