Html Agility Pack: come selezionare la classe span corretta

c# html-agility-pack

Domanda

Sto cercando di trovare il prezzo più basso nelle pagine di Amazon. Usiamo questo URL come esempio:

http://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords=9963BB#/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords=E999-4701&rh=i%3Aaps%2Ck%3AE999-4701

Voglio trovare il prezzo più basso ... il numero a destra di "nuovo da".

Ecco cosa ho provato:

        using (TextWriter tw = new StreamWriter(@"D:\AmazonUrls.txt"))
        {
            foreach (string item in list)
            {
                var webGet = new HtmlWeb();
                var document = webGet.Load(item);
                var lowestPrice = document.DocumentNode.SelectSingleNode("//span[@id='subPrice']");
                if (lowestPrice != null)
                {
                    Console.WriteLine(lowestPrice);                
                }

            }           
        }

Non ho alcun risultato. Dove sto andando male?

Risposta accettata

Stai chiedendo i nodi con un id di subPrice, ma è in effetti una class che ha subPrice:

<span class="subPrice">
        <a href="http://rads.stackoverflow.com/amzn/click/B001BA0W06">5 new</a>
    from <span class="price">$245.90</span></span>

così,

var lowestPrice = document.DocumentNode.SelectSingleNode("//span[@class='subPrice']");

dovresti prenderti quello che vuoi Tuttavia, la pagina di esempio che hai dato ha diversi nodi che corrispondono a quel modello, quindi il problema è quello di selezionare più nodi e quindi passarli in loop per decidere quale ha il minimo grado di interesse.



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é