Devuelve null en HtmlAgilityPack

c# html-agility-pack

Pregunta

¡Quiero usar este código pero devuelve NULL en todos estos parámetros! ¿Podrías ayudarnos a solucionarlo o cuál es el problema?

Haga clic aquí para ver una imagen que muestra lo que sucedió.

código:

    HtmlWeb hw = new HtmlWeb();

    private void button1_Click(object sender, EventArgs e)
        {
            Crawler("http://www.avval.ir/directory", 0);
        }

    public void Crawler(string url, int pid)
        {


            try
            {

                HtmlAgilityPack.HtmlDocument doc = hw.Load("http://www.avval.ir/directory");
                HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//a[@class='metatag-topi metatag-keywords']");
                HtmlNodeCollection nodes2 = doc.DocumentNode.SelectNodes("//div[@class='pagination']/a[@href]");
                HtmlNodeCollection phone = doc.DocumentNode.SelectNodes("//p[@class='phone fRight ml10']");

            }
        }

Respuesta aceptada

Hombre, parece que tienes un error tipográfico en tu xpath selector, ver:

HtmlNodeCollection nodes = 
    doc.DocumentNode.SelectNodes("//a[@class='metatag-topi metatag-keywords']");

Aquí se usa //a[@class='metatag-topi metatag-keywords'] expresión //a[@class='metatag-topi metatag-keywords'] que selecciona todas las etiquetas <a> con el valor de atributo de class metatag-topi metatag-keywords . Pero el problema es que la página en la que está tratando de aplicar su expresión no contiene tales elementos, pero tiene algunos <a class="metatag-topic metatag-keywords"> (falta la letra c al final del topic de la palabra) .

Solo cambia esa línea a:

HtmlNodeCollection nodes = 
    doc.DocumentNode.SelectNodes("//a[@class='metatag-topic metatag-keywords']");

y debería funcionar.


Respuesta popular

El DocumentNode.SelectNodes podría devolver nulo si no se encuentran nodos.

Puede verificar esto relacionado. Por qué DocumentNode.SelectNodes devuelve null



Related

Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow