Problema de consulta XPath usando HTML Agility Pack

c# html-agility-pack xpath

Pregunta

Estoy intentando raspar el campo de precios de este sitio web utilizando el paquete de agilidad HTML.

Mi código es el siguiente;

var web = new HtmlWeb();
var doc = web.Load(String.Format(overClockersURL, componentID));
var priceContent = doc.DocumentNode.SelectSingleNode("//*[@id=\"prodprice\"]");

Obtuve la consulta XPath utilizando la función " Copiar como XPath " de Firebug.

El problema que tengo es que SelectSingleNode está devolviendo un valor nulo : no parece encontrar el elemento especificado por la consulta. Estoy un poco perplejo en cuanto a por qué, pero no tengo mucha experiencia con XPath, así que apreciaría algunas sugerencias sobre lo que he hecho mal.

Respuesta aceptada

Cuando eso suceda, deberías comprobar si la página se está cargando correctamente (¿dijiste que estás a través de un proxy HTTP?)

Intente escribir el contenido de doc.DocumentNode.OuterHtml en un archivo de texto para que pueda ver si la página se está cargando correctamente. Tal vez esté recibiendo una página de error en lugar de la página original.


Respuesta popular

Si ejecuto este código:

    var web = new HtmlWeb();
    var doc = web.Load("http://www.overclockers.co.uk/showproduct.php?prodid=GX-033-HS");
    var priceContent = doc.DocumentNode.SelectSingleNode("//*[@id=\"prodprice\"]");
    Console.WriteLine("price=" + priceContent.InnerHtml);

Produce:

price=529.99

Así que parece estar funcionando. También puede usar //span[@id=\"prodprice\"]" que es mejor porque evita todas las etiquetas que no sean SPAN.



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é