title: HTML Agility Pack find Descendants
body: <p>i am doing crawling practice on a Web page and want to display some content on my Web page and I am stuck in code to find Descendants .
  Below is the webpage HTML</p>
  
  <pre><code>&lt;ul class="results"&gt;
      &lt;li class="gts" data-webm-section="OAG-AD-14960184"&gt;
          &lt;a class="item-link-container" href="/bikes/details/2016-Indian-Chieftain-Dark-Horse-MY17/OAG-AD-14960184/?cr=0&amp;amp;gts=OAG-AD-14960184&amp;amp;gtsviewtype=TopSpot&amp;amp;gtssaleid=OAG-AD-14960184&amp;amp;psq=%28%28Service%3D%5BBikesales%5D%26State%3D%5BNSW%5D%29%26%28%28%28%28SiloType%3D%5BBrand%20new%20bikes%20available%5D%7CSiloType%3D%5BBrand%20new%20bikes%20in%20stock%5D%29%7CSiloType%3D%5BDealer%20used%20bikes%5D%29%7CSiloType%3D%5BDemo%20%26%20near%20new%20bikes%5D%29%7CSiloType%3D%5BPrivate%20used%20bikes%5D%29%29&amp;amp;pso=0&amp;amp;pss=Premium"&gt;
              &lt;header&gt;
                  &lt;h3&gt;&lt;span class=&gt;&lt;/span&gt;Heading&lt;/h3&gt;
                  &lt;div class="spotlight flag non-textual"&gt;Spotlight&lt;/div&gt;
              &lt;/header&gt;
              &lt;div class="primary panel"&gt;
                  &lt;ul class="photos" data-js-lazy-load-length="3" style="width:8350px"&gt;
                      &lt;li&gt;
                          &lt;img src="http//" height="221" width="334" alt="2016 Indian Chieftain Dark Horse MY17" /&gt;
                      &lt;/li&gt;
                  &lt;/ul&gt;
                  &lt;div class="image-nav previous" data-webm-clickvalue="previous-image"&gt;
                      &lt;span class="arrow"&gt;&lt;/span&gt;
                      &lt;span class="background"&gt;&lt;/span&gt;
                  &lt;/div&gt;
                  &lt;div class="image-nav next" data-webm-clickvalue="next-image"&gt;
                      &lt;span class="arrow"&gt;&lt;/span&gt;
                      &lt;span class="background"&gt;&lt;/span&gt;
                  &lt;/div&gt;
                  &lt;div class="image-nav-count"&gt;
                      &lt;span class="current"&gt;1&lt;/span&gt; of 24
                  &lt;/div&gt;
              &lt;/div&gt;
              &lt;div class="secondary panel"&gt;
                  &lt;span class="price"&gt;$29,995*&lt;/span&gt;
                  &lt;div data-fancybox-href="/mvcajax/bikes/PriceGuide/" class="pricing-message light-box-iframe"&gt;
                      Ride Away No More To Pay
                  &lt;/div&gt;
                  &lt;div class="features"&gt;
                      &lt;ul&gt;
                          &lt;li class="ui-category"&gt;
                              &lt;i&gt;&lt;/i&gt;Cruiser
                          &lt;/li&gt;
                          &lt;li class="engine-size"&gt;
                              &lt;i&gt;&lt;/i&gt;1,811 cc
                          &lt;/li&gt;
                          &lt;li class="odometer"&gt;
                              &lt;i&gt;&lt;/i&gt;2,552 km
                          &lt;/li&gt;
                      &lt;/ul&gt;
                      &lt;div class="bike-facts non-textual"&gt;&lt;/div&gt;
                  &lt;/div&gt;
              &lt;/div&gt;
              &lt;p class="description"&gt;**NO REGRETS - 7 Day Money Back guarantee** PLUS 12 months Warranty &amp;amp; Roadside Assist.Conditions App...&lt;/p&gt;
  
          &lt;/a&gt;
      &lt;/li&gt;
  &lt;/ul&gt;
  </code></pre>
  
  <p>In above html I want image , price and category of bike </p>
  
  <p>Below is my code</p>
  
  <pre><code> public async Task&lt;ActionResult&gt; Webcrawl()
      {
          string URL = "https://www.bikesales.com.au/bikes/new-south-wales/";
          List&lt;bikes&gt; bikelist = new List&lt;bikes&gt;();
          using (var client = new HttpClient())
          {
              var html = await client.GetStringAsync(URL);
  
              HtmlDocument Doc = new HtmlDocument();
              Doc.LoadHtml(html);
  
              var ProductsHtml = Doc.DocumentNode.Descendants("ul").Where(node =&gt; node.GetAttributeValue("class", "").Equals("results")).ToList();
  
              var ProductsList = ProductsHtml[0].Descendants("li").Where(node =&gt; node.GetAttributeValue("class", "").Equals("gts")).ToList();
              foreach (var list in ProductsList)
              {
                  var PriceNode = list.SelectSingleNode("//div[@class='secondary panel']");
                  var bike = new bikes
                  {
                      Name = list.Descendants("h3").FirstOrDefault().InnerText,
                      Title = list.Descendants("p").FirstOrDefault().InnerText,
                      Price = PriceNode.Descendants("span").FirstOrDefault().InnerText,
                      Image = list.SelectNodes("//div[@class='primary panel']/ul[1]/li[1]/img").FirstOrDefault().ChildAttributes("src").FirstOrDefault().Value,
                      Type = list.SelectNodes("//div[@class='secondary panel']/div[2]/ul[1]/li[1]").FirstOrDefault().InnerText.Trim('\r', '\n', '\t'),
                      Engine = list.SelectNodes("//div[@class='secondary panel']/div[2]/ul[1]/li[2]").FirstOrDefault().InnerText.Trim('\r', '\n', '\t'),
                      Odometer = list.SelectNodes("//div[@class='secondary panel']/div[2]/ul[1]/li[3]").FirstOrDefault().InnerText.Trim('\r', '\n', '\t'),
                  };
                  bikelist.Add(bike);
              }
              return View(bikelist);
          }
      }
  </code></pre>
  
  <p>When I run the above Code I only get First element of the list except name i.e  same Image , same type , and same price.</p>
  
  <p>Please correct my  mistake in code.
  Thanks in Advance.</p>