Extraire des images d'un site Web à l'aide de Aspose.HTML

Supposons que vous soyez développeur web, graphiste, chercheur, journaliste ou étudiant, en un mot, une personne travaillant sur son propre projet. Dans ce cas, vous aurez évidemment besoin d’images pour votre projet au cours du processus de développement. Pour télécharger manuellement des images à partir d’un site web, vous passez beaucoup de temps. Vous devrez copier chaque URL d’image, puis enregistrer l’image, mais vous pouvez utiliser la bibliothèque Aspose.HTML for .NET library pour extraire des images d’un site web de manière programmatique.

Dans cet article, nous verrons comment extraire différents types d’images d’un site Web en utilisant l’API Aspose.HTML for .NET. L’utilisation de notre bibliothèque C# vous aidera à télécharger des images à partir d’un site Web. C’est mieux que de les chercher manuellement. Essayez donc ! Extraire des images d’un site Web par programmation !

Extraire des images d’un site Web – Code C#

La plupart des images d’un document HTML sont représentées à l’aide de l’élément <img>. Voici un exemple d’utilisation de Aspose.HTML for .NET pour trouver les images spécifiées par cet élément. Pour télécharger des images à partir d’un site web, vous devez donc suivre les étapes suivantes :

  1. Utilisez le constructeur HTMLDocument(Url) pour créer une instance de la classe HTMLDocument et transmettez-lui l’URL du site web sur lequel vous souhaitez trouver des images.
  2. Utilisez la méthode GetElementsByTagName(“img”) pour collecter tous les éléments <img>. La méthode renvoie une liste des éléments <img> du document HTML.
  3. Utilisez la méthode Select() pour créer une collection distincte d’URL d’images relatives et la méthode GetAttribute(“src”) pour extraire l’attribut src de chaque élément <img>.
  4. Créer des URL d’images absolues en utilisant la classe Url et la propriété BaseURI de la classe HTMLDocument.
  5. Pour chaque URL absolu, créez une requête à l’aide du constructeur RequestMessage(url).
  6. Utilisez la méthode Context.Network.Send(request) du document pour envoyer la demande. La réponse est vérifiée pour s’assurer qu’elle a été envoyée avec succès.
  7. Enfin, si la réponse est positive, utilisez la méthode File.WriteAllBytes() pour enregistrer chaque image dans un fichier local.
 1// Extract images from website using C#
 2
 3// Load a webpage that contains <img> elements
 4using HTMLDocument document = new HTMLDocument("https://docs.aspose.com/html/net/tutorial/html-colors/");
 5
 6// Collect all <img> elements
 7HTMLCollection images = document.GetElementsByTagName("img");
 8
 9// Extract distinct src values and skip empty and data URI sources
10IEnumerable<string> sources = images
11    .Select(image => image.GetAttribute("src"))
12    .Where(src => !string.IsNullOrWhiteSpace(src) &&
13        !src.StartsWith("data:", StringComparison.OrdinalIgnoreCase))
14    .Distinct();
15
16foreach (string src in sources)
17{
18    // Resolve the image URL against the document base URI
19    Url imageUrl = new Url(src, document.BaseURI);
20
21    using RequestMessage request = new RequestMessage(imageUrl);
22    using ResponseMessage response = document.Context.Network.Send(request);
23
24    if (!response.IsSuccess)
25        continue;
26
27    string fileName = Path.GetFileName(imageUrl.Pathname);
28
29    if (string.IsNullOrWhiteSpace(fileName))
30        continue;
31
32    File.WriteAllBytes(Path.Combine(OutputDir, fileName), response.Content.ReadAsByteArray());
33}

Note: Il est important de respecter les lois sur les droits d’auteur et d’obtenir l’autorisation ou la licence appropriée avant d’utiliser les images sauvegardées à des fins commerciales. Nous ne sommes pas favorables à l’extraction de données et à l’utilisation de fichiers d’autres personnes à des fins commerciales sans leur autorisation.

Extraire des icônes – Code C#

Les icônes sont une sorte d’image dans les documents HTML qui sont spécifiés en utilisant des éléments <link> avec l’attribut rel fixé à icon. Voyons comment extraire des icônes d’un site Web à l’aide de la bibliothèque Aspose.HTML for .NET :

  1. Utilisez le constructeur HTMLDocument(Url) pour créer une instance de la classe HTMLDocument et transmettez-lui l’URL du site web dont vous voulez extraire les icônes.
  2. Utilisez la méthode GetElementsByTagName(“link”) pour collecter tous les éléments <link>.
  3. Pour filtrer les images qui ne sont pas des icônes, utilisez la méthode Where() qui filtre la collection en se basant sur l’expression link => link.GetAttribute("rel") == "icon". Ainsi, la collection icons ne contiendra que les liens dont l’attribut rel a la valeur icon.
  4. Utilisez la méthode Select() pour créer une collection distincte d’URL d’icônes relatives et la méthode GetAttribute(“href”) pour extraire l’attribut href de chaque élément <link>.
  5. Créer des URL d’icônes absolues en utilisant la classe Url et la propriété BaseURI de la classe HTMLDocument.
  6. Ensuite, pour chaque URL absolu, créez une requête en utilisant la classe RequestMessage.
  7. Utilisez la méthode Context.Network.Send(request) du document pour envoyer la demande. La réponse est vérifiée pour s’assurer qu’elle a été envoyée avec succès.
  8. Si la réponse est positive, utilisez la méthode File.WriteAllBytes() pour sauvegarder les icônes dans un fichier local. Vous disposerez ainsi d’une collection d’icônes de sites web dans votre dossier local.
 1// Download icons from website using C#
 2
 3using HTMLDocument document = new HTMLDocument("https://docs.aspose.com/html/net/message-handlers/");
 4
 5// Collect all <link> elements
 6HTMLCollection links = document.GetElementsByTagName("link");
 7
 8string[] iconTypes =
 9{
10    "icon",
11    "apple-touch-icon",
12    "apple-touch-icon-precomposed",
13    "mask-icon"
14};
15
16// Select links whose rel attribute contains an icon-related token
17IEnumerable<Element> icons = links.Where(link =>
18    link.GetAttribute("rel")
19        .Split()
20        .Any(token => iconTypes.Contains(
21            token,
22            StringComparer.OrdinalIgnoreCase)));
23
24// Extract distinct href values and skip empty and data URI sources
25IEnumerable<string> sources = icons
26    .Select(icon => icon.GetAttribute("href"))
27    .Where(href => !string.IsNullOrWhiteSpace(href) &&
28        !href.StartsWith("data:", StringComparison.OrdinalIgnoreCase))
29    .Distinct();
30
31foreach (string src in sources)
32{
33    // Resolve the icon URL against the document base URI
34    Url iconUrl = new Url(src, document.BaseURI);
35
36    using RequestMessage request = new RequestMessage(iconUrl);
37    using ResponseMessage response = document.Context.Network.Send(request);
38
39    if (!response.IsSuccess)
40        continue;
41
42    string fileName = Path.GetFileName(iconUrl.Pathname);
43
44    if (string.IsNullOrWhiteSpace(fileName))
45        continue;
46
47    File.WriteAllBytes(Path.Combine(OutputDir, fileName), response.Content.ReadAsByteArray());
48}

Vous pouvez utiliser ces exemples C# pour automatiser l’extraction de toutes les images d’un site web, ce qui peut s’avérer utile pour des tâches telles que l’archivage, la recherche, l’analyse de contenu web ou toute autre application à usage personnel. Cette méthode 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.

Vous pouvez télécharger les exemples C# complets et les fichiers de données sur GitHub.

Aspose.HTML propose des applications Web HTML qui sont une collection en ligne de convertisseurs gratuits, de fusions, d’outils SEO, de générateurs de code HTML, d’outils URL, et bien plus encore. Les applications fonctionnent sur n’importe quel système d’exploitation doté d’un navigateur web et ne nécessitent aucune installation de logiciel supplémentaire. Convertissez, fusionnez, encodez, générez facilement du code HTML, extrayez des données du web ou analysez des pages web en termes de référencement, où que vous soyez. Utilisez notre collection d’applications web HTML pour effectuer vos tâches quotidiennes et rendre votre flux de travail fluide !

Texte “Applications Web HTML”