XPath Query Problem using HTML Agility Pack

c# html-agility-pack xpath

Domanda

Sto cercando di analizzare il campo del prezzo da questo sito Web utilizzando l'HTML Agility Pack.

Il mio codice è il seguente;

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

Ho ottenuto la query XPath utilizzando la funzione " Copia come XPath " di Firebug.

Il problema che sto avendo è che SelectSingleNode restituisce null - non sembra trovare l'elemento specificato dalla query. Sono un po 'perplesso sul perché, ma non ho molta esperienza con XPath, quindi apprezzerei alcuni suggerimenti su cosa ho fatto di sbagliato.

Risposta accettata

Quando ciò accade, dovresti controllare se la pagina viene caricata correttamente (hai detto che stai attraversando un proxy HTTP?)

Prova a scrivere il contenuto di doc.DocumentNode.OuterHtml in un file di testo in modo da poter vedere se la pagina viene caricata correttamente. Forse stai ricevendo una pagina di errore invece della pagina originale.


Risposta popolare

Se eseguo questo codice:

    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);

Emette:

price=529.99

Quindi sembra funzionare. Puoi anche usare //span[@id=\"prodprice\"]" che è meglio in quanto evita tutti i tag non SPAN.



Related

Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché