XPath en VB.NET con HTML Agility pack

html-agility-pack vb.net xpath

Pregunta

Tengo el siguiente código vb.net que funciona bien y en el cuadro de mensaje veo el número exacto de elementos que tienen un atributo de identificación.

Dim hreftext = htmldoc.DocumentNode.SelectNodes("//*[@id]")
 MsgBox(hreftext.Count)

ahora el problema es cuando uso lo siguiente en el cuadro de mensaje que me da Referencia de objeto no configurada en una instancia de un objeto, aunque hay 6 elementos con el identificador rso

Dim hreftext = htmldoc.DocumentNode.SelectNodes("//*[@id]")
 MsgBox(hreftext.Count)

¿Hay algo malo con el segundo fragmento?

Respuesta aceptada

Después de leer otra de sus preguntas de SO, parece que está intentando eliminar las compras de Google y se ha olvidado de verificar la fuente html descargada, en lugar de la dom generada.

El id "rso" no aparece en la fuente html, por lo que está recibiendo el error. Google no está interesado en ser raspado, y ciertamente lo hace difícil.

Para ver lo que quiero decir, puede agregar un cuadro de texto multilínea a su formulario y agregar esto en lugar de su código xpath actual:

TextBox1.Text = htmldoc.DocumentNode.OuterHtml

Bastante no es !!


Respuesta popular

Para más detalles sobre la comprobación del caso:

Tratar:

Dim hreftext = htmldoc.DocumentNode.SelectNodes("//*[translate(@id,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')='rso']")
 MsgBox(hreftext.Count)

Para agarrar cualquier nodo que sea igual a cualquier combinación de caso de 'rso'




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é