Comment utiliser HTML Agility Pack pour récupérer toutes les images d'un site Web?

c# html-agility-pack parsing

Question

Je viens de télécharger HTMLAgilityPack et la documentation ne contient aucun exemple.

Je cherche un moyen de télécharger toutes les images d'un site Web. Les chaînes d'adresse, pas l'image physique.

<img src="blabalbalbal.jpeg" />

Je dois extraire la source de chaque balise img. Je veux juste avoir une idée de la bibliothèque et de ce qu'elle peut offrir. Tout le monde a dit que c'était le meilleur outil pour le travail.

modifier

<img src="blabalbalbal.jpeg" />

Réponse acceptée

Vous pouvez le faire en utilisant LINQ, comme ceci:

var document = new HtmlWeb().Load(url);
var urls = document.DocumentNode.Descendants("img")
                                .Select(e => e.GetAttributeValue("src", null))
                                .Where(s => !String.IsNullOrEmpty(s));

EDIT : Ce code fonctionne actuellement; J'avais oublié d'écrire document.DocumentNode .


Réponse populaire

Basé sur leur seul exemple, mais avec XPath modifié:

 HtmlDocument doc = new HtmlDocument();
 List<string> image_links = new List<string>();
 doc.Load("file.htm");
 foreach(HtmlNode link in doc.DocumentElement.SelectNodes("//img"))
 {
    image_links.Add( link.GetAttributeValue("src", "") );
 }

Je ne connais pas cette extension, je ne sais donc pas comment écrire le tableau ailleurs, mais cela vous permettra au moins d'obtenir vos données. (En outre, je ne suis pas sûr de définir le tableau correctement. Désolé).

modifier

En utilisant votre exemple:

 HtmlDocument doc = new HtmlDocument();
 List<string> image_links = new List<string>();
 doc.Load("file.htm");
 foreach(HtmlNode link in doc.DocumentElement.SelectNodes("//img"))
 {
    image_links.Add( link.GetAttributeValue("src", "") );
 }



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi