cómo usar el paquete de agilidad html para extraer toda la URL del texto html

c# html-agility-pack

Pregunta

A menudo extraigo nombres de archivos de datos de texto html usando expresiones regulares, pero escuché que el paquete de agilidad html es bueno para analizar datos html. ¿Cómo puedo usar el paquete de agilidad html para extraer toda la URL de los datos html? ¿Puede alguien guiarme con código de ejemplo? Gracias.

Este es mi ejemplo de código que funciona bien.

using System.Text.RegularExpressions;

private ArrayList GetFilesName(string Source)
{
    ArrayList arrayList = new ArrayList();
    Regex regex = new Regex("(?<=src=\")([^\"]+)(?=\")", 1);
    MatchCollection matchCollection = regex.Matches(Source);
    foreach (Match match in matchCollection)
    {
        if (!match.get_Value().StartsWith("http://"))
        {
                    arrayList.Add(Path.GetFileName(match.get_Value()));
                }
                match.NextMatch();
            }
            ArrayList arrayList1 = arrayList;
            return arrayList1;
        }

private string ReplaceSrc(string Source)
{
    Regex regex = new Regex("(?<=src=\")([^\"]+)(?=\")", 1);
    MatchCollection matchCollection = regex.Matches(Source);
    foreach (Match match in matchCollection)
    {
        string value = match.get_Value();
        string str = string.Concat("images/", Path.GetFileName(value));
        Source = Source.Replace(value, str);
        match.NextMatch();
    }
    string source = Source;
    return source;
}

Respuesta aceptada

Seleccione todas las etiquetas img con atributo src no vacío (de lo contrario, obtendrá NullReferenceException durante la obtención del valor del atributo):

HtmlDocument html = new HtmlDocument();
html.Load(path_to_file);
var urls = html.DocumentNode.SelectNodes("//img[@src!='']")
               .Select(i => i.Attributes["src"].Value);

Respuesta popular

Algo como:

var doc = new HtmlDocument();
doc.LoadHtml(html);

var images = doc.DocumentNode.Descendants("img")
    .Where(i => i.GetAttributeValue("src", null) != null)
    .Select(i => i.Attributes["src"].Value);

Esto selecciona todos los elementos <img> del documento que tienen un conjunto de propiedades src y devuelve estas URL.



Related

Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué