Html Agility Pack - how to select correct span class

c# html-agility-pack

Question

I'm trying to find lowest price on Amazon pages. Let's use this url as an example:

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

I want to find the lowest price ... the number to the right of "new from".

Here's what I have tried:

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

            }           
        }

I'm not getting any result. Where am I going wrong?

Accepted Answer

You are asking for nodes with an id of subPrice, but it is in fact class that has subPrice:

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

so,

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

should get you what you want. However, the example page that you give has several nodes that match that pattern, so you problem want to select multiple nodes and then loop through them to decide which has the lowest privce.




Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow
Is this KB legal? Yes, learn why
Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow
Is this KB legal? Yes, learn why