HTMLAgilityPack Selectnodes siempre devuelve null

.net c# html html-agility-pack

Pregunta

Escuché cosas buenas sobre la biblioteca HTMLAgilityPack, así que pensé en probarlo, pero no he tenido ningún éxito. He estado tratando de resolver esto durante meses. No importa lo que haga, no puedo obtener este código para darme otra cosa que no sea nula. Intenté seguir este ejemplo ( http://www.c-sharpcorner.com/uploadfile/9b86d4/getting-started-with-html-agility-pack/ ), pero no obtengo los mismos resultados y no puedo explicar por qué.

Intento cargar el archivo y luego ejecuto SelectNodes para seleccionar todos los hipervínculos, pero siempre devuelve una lista vacía. He intentado seleccionar todo tipo de nodos (divs, p, a, todo y cualquier cosa) y siempre devuelve una lista vacía. He intentado usar doc.Descendants, he intentado usar diferentes archivos de origen, localmente y en la web, y nada de lo que haga devolverá un resultado real.

Debo haber pasado por alto algo importante, pero no puedo entender qué es. ¿Qué podría faltar?

Código:

    public string GetSource()
    {
        try
        {
            string result = "";

            HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
            if (!System.IO.File.Exists("htmldoc.html"))
                throw new Exception("Unable to load doc");

            doc.LoadHtml("htmldoc.html");   // copied locally to bin folder, confirmed it found the file and loaded it

            HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//a");  // Always returns null, regardless of what I put in here

            if (nodes != null)  
            {
                foreach (HtmlNode item in nodes)
                {
                    result += item.InnerText;
                }
            }
            else
            {
                // Every. Single. Time.
                throw new Exception("No matching nodes found in document");
            }


            return result;
        }
        catch (Exception ex)
        {                
            return ex.ToString();
        }
    }

El archivo HTML de origen 'htmldoc.html' que estoy usando se ve así:

<html>  
<head>  
    <title>Testing HTML Agility Pack</title>
</head>  
<body>  
    <div id="div1">  
        <a href="div1-a1">Link 1 inside div1</a>  
        <a href="div1-a2">Link 2 inside div1</a>  
    </div>  
        <a href="a3">Link 3 outside all divs</a>      
        <div id="div2">  
        <a href="div2-a1">Link 1 inside div2</a>  
        <a href="div2-a2">Link 2 inside div2</a>  
    </div>  
</body>  
</html>

Respuesta aceptada

Para cargar un archivo, debe usar el método de Load . LoadHtml se usa para cadenas que contienen html

doc.Load("htmldoc.html"); 



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é