Html Agility Pack - comment sélectionner la classe d’étendue correcte

c# html-agility-pack

Question

J'essaie de trouver le prix le plus bas sur les pages Amazon. Utilisons cette url comme exemple:

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

Je veux trouver le prix le plus bas ... le nombre à droite de "nouveau de".

Voici ce que j'ai essayé:

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

            }           
        }

Je n'obtiens aucun résultat. Où vais-je mal?

Réponse acceptée

Vous demandez des nœuds avec un id de sous-prix, mais c'est en fait une class qui a un sous-prix:

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

alors,

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

devrait vous obtenir ce que vous voulez. Toutefois, l'exemple de page que vous donnez contient plusieurs nœuds qui correspondent à ce modèle. Par conséquent, vous souhaitez peut-être sélectionner plusieurs nœuds, puis les parcourir en boucle pour déterminer le type de privilège le plus bas.



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi