Extraire des SVG d'un site Web à l'aide d'Aspose.HTML for Java
SVG est un format graphique vectoriel conçu principalement pour le web, souvent utilisé dans les documents HTML. Le principal avantage du SVG est sa capacité exceptionnelle à s’adapter à toutes les tailles sans perte de qualité. En outre, le SVG offre plusieurs avantages, notamment la programmabilité, la taille réduite des fichiers, les options de style, l’interactivité et bien d’autres encore, qui peuvent tous améliorer l’attrait visuel et la fonctionnalité d’une page web.
Le téléchargement de SVG n’est pas aussi simple qu’il n’y paraît. Si vous avez déjà utilisé le bouton droit de la souris pour enregistrer ou ouvrir une image à partir d’une page web, vous avez probablement remarqué que les fichiers SVG sont difficiles à extraire d’un site web. Parfois, le clic droit ne permet pas d’ouvrir l’image dans un nouvel onglet ou de l’enregistrer. Que faire alors ? Vous pouvez inspecter manuellement le code HTML pour identifier les balises SVG et déterminer où le contenu SVG commence et se termine. Heureusement, il existe une solution plus simple : vous pouvez utiliser Aspose.HTML for Java pour télécharger par programme des fichiers SVG à partir d’un site web.
Les graphiques SVG sur les pages web peuvent être intégrés de deux manières : en tant que svg en ligne dans le HTML ou en tant que svg externe référencé via des URL. Dans cet article, nous verrons comment extraire les SVG inline et externes à l’aide de l’API Aspose.HTML for Java. Grâce à cette approche, vous pouvez collecter automatiquement tous les SVG d’un site web sans avoir à parcourir manuellement le code. Plongeons dans cet article et rendons l’extraction de SVG sans effort !
Extraire SVG d’un site web – Inline SVG
les images Inline SVG sont des éléments SVG <svg>
dont le contenu décrit l’image. Le SVG en ligne consiste à intégrer le code SVG directement dans le code HTML plutôt que de créer un lien vers un fichier SVG externe. Il s’agit d’une technique populaire pour créer des icônes, des logos et d’autres éléments graphiques pour les sites web.
Pour sauvegarder des images SVG en ligne, nous trouverons tous les éléments <svg>
dans un document HTML et utiliserons la propriété OuterHTML
de la classe
Element pour obtenir leur contenu. Ainsi, pour télécharger des SVG à partir d’un site web, vous devez suivre les étapes suivantes :
- Utilisez le constructeur
HTMLDocument(Url) pour créer une instance de
HTMLDocument
, en passant l’URL de la page web contenant des images SVG en ligne. - Appelez la méthode
getElementsByTagName(“img”) pour collecter tous les éléments
<svg>
présents dans le document HTML. - Créer une boucle pour parcourir chaque image SVG dans la collection
images
. - Pour chaque image du tableau, utilisez la méthode
getOuterHTML()
pour obtenir le contenu de l’élément SVG, puis utilisez la méthodeFileHelper.writeAllText()
pour écrire le contenu SVG dans un fichier.svg
local.
1// Open a document you want to download inline SVG images from
2final HTMLDocument document = new HTMLDocument("https://products.aspose.com/html/net/");
3
4// Collect all inline SVG images
5HTMLCollection images = document.getElementsByTagName("svg");
6
7for (int i = 0; i < images.getLength(); i++) {
8 // Save every image to a local file system
9 FileHelper.writeAllText("{i}.svg", images.get_Item(i).getOuterHTML());
10}
Note: Respectez toujours les lois sur les droits d’auteur lorsque vous travaillez avec des fichiers SVG. Certains fichiers SVG, tels que les logos d’entreprise ou les graphiques de marque, peuvent être protégés et leur utilisation sans autorisation peut être considérée comme du plagiat. Avant d’extraire ou d’utiliser des fichiers SVG dans vos projets, vérifiez les conditions d’utilisation du site web ou contactez le propriétaire du site pour obtenir l’autorisation nécessaire.
Extraire un SVG d’un site web – External SVG
Un SVG externe est un fichier SVG stocké en dehors d’un document HTML et chargé dans le document à l’aide, par exemple, d’une balise <img>
. La séparation des fichiers SVG du HTML permet de réutiliser la même image SVG à plusieurs endroits sans dupliquer le code, ce qui rend les pages web plus efficaces et plus faciles à maintenir.
Les images SVG externes sont représentées par l’élément <img>
, qui peut à son tour faire référence à d’autres types d’images, de sorte que les images SVG doivent faire l’objet d’un filtrage supplémentaire. Voyons comment télécharger des SVG à partir d’un site web en utilisant la bibliothèque Aspose.HTML for Java :
- Créez une instance de la classe HTMLDocument en utilisant le constructeur
HTMLDocument(
Url
) et passez l’URL du site web à partir duquel vous souhaitez extraire des images SVG externes. - Collecter tous les éléments
<img>
dans le document HTML en utilisant la méthode getElementsByTagName("img"
). - Extraire l’attribut
src
de chaque élément d’image en utilisant la méthode getAttribute(“src”) et stocker les valeurs dans unSet
. - Filtrer uniquement les URLs des images
.svg
en vérifiant si chaque URL se termine par.svg
, et les ajouter à une nouvelle liste. - Créer des URLs absolues d’images SVG en utilisant la classe
Url et la propriété
BaseURI de la classe
HTMLDocument
. - Parcourez les URL absolues et créez une requête à l’aide de la classe RequestMessage pour chaque URL SVG.
- Envoyez chaque requête en utilisant
document.getContext().getNetwork().send(request)
et vérifiez le succès de la réponse. - Enfin, si la réponse est positive, utilisez
FileHelper.writeAllBytes()
pour sauvegarder le contenu SVG sur le système de fichiers local.
1// Open a document you want to download external SVGs from
2final HTMLDocument document = new HTMLDocument("https://products.aspose.com/html/net/");
3
4// Collect all image elements
5HTMLCollection images = document.getElementsByTagName("img");
6
7// Create a distinct collection of relative image URLs
8java.util.Set<String> urls = new HashSet<>();
9for (Element element : images) {
10 urls.add(element.getAttribute("src"));
11}
12
13// Filter out non SVG images
14java.util.List<String> svgUrls = new ArrayList<>();
15for (String url : urls) {
16 if (url.endsWith(".svg")) {
17 svgUrls.add(url);
18 }
19}
20// Create absolute SVG image URLs
21java.util.List<Url> absUrls = svgUrls.stream()
22 .map(src -> new Url(src, document.getBaseURI()))
23 .collect(Collectors.toList());
24
25// foreach to while statements conversion
26for (Url url : absUrls) {
27 // Create a downloading request
28 final RequestMessage request = new RequestMessage(url);
29
30 // Download SVG image
31 final ResponseMessage response = document.getContext().getNetwork().send(request);
32
33 // Check whether response is successful
34 if (response.isSuccess()) {
35 String[] split = url.getPathname().split("/");
36 String path = split[split.length - 1];
37
38 // Save file to a local file system
39 FileHelper.writeAllBytes(path, response.getContent().readAsByteArray());
40 }
41}
Cette approche automatise l’extraction des images SVG externes d’une page web, ce qui vous évite de télécharger manuellement chaque fichier. C’est une solution idéale pour les concepteurs et les développeurs qui souhaitent extraire des SVG 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 tous les systèmes 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.