parse htmldocument htmlagilitypack agility c# parsing html-agility-pack

c# - htmldocument - htmlagilitypack xpath



¿Cómo puedo usar HTML Agility Pack para recuperar todas las imágenes de un sitio web? (2)

Acabo de descargar HTMLAgilityPack y la documentación no tiene ningún ejemplo.

Estoy buscando una manera de descargar todas las imágenes de un sitio web. Las cadenas de direcciones, no la imagen física.

<img src="blabalbalbal.jpeg" />

Necesito extraer la fuente de cada etiqueta img. Solo quiero conocer la biblioteca y lo que puede ofrecer. Todos dijeron que esta era la mejor herramienta para el trabajo.

Editar

public void GetAllImages() { WebClient x = new WebClient(); string source = x.DownloadString(@"http://www.google.com"); HtmlAgilityPack.HtmlDocument document = new HtmlAgilityPack.HtmlDocument(); document.Load(source); //I can''t use the Descendants method. It doesn''t appear. var ImageURLS = document.desc .Select(e => e.GetAttributeValue("src", null)) .Where(s => !String.IsNullOrEmpty(s)); }


Puedes hacer esto usando LINQ, así:

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

EDITAR : Este código ahora realmente funciona; Me olvidé de escribir document.DocumentNode .


Según su único ejemplo, pero con XPath modificado:

HtmlDocument doc = new HtmlDocument(); doc.Load("file.htm"); foreach(HtmlNode link in doc.DocumentElement.SelectNodes("//img") { image_links[] = link["src"]; }

No conozco esta extensión, por lo que no estoy seguro de cómo escribir la matriz en otro lugar, pero al menos obtendrá sus datos. (Además, no defino la matriz correctamente, estoy seguro. Lo siento).

Editar

Usando tu ejemplo:

public void GetAllImages() { WebClient x = new WebClient(); string source = x.DownloadString(@"http://www.google.com"); HtmlAgilityPack.HtmlDocument document = new HtmlAgilityPack.HtmlDocument(); document.Load(source); foreach(HtmlNode link in document.DocumentElement.SelectNodes("//img") { image_links[] = link["src"]; } }