.NET 4.x HtmlAgilityPack шалит - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Как-то странно ведет себя HtmlAgilityPack, или я дурак. У меня переберется список нодов и извлекается из них некие данные, но она каждый мне выдает одинаковые данные и они ровняются данным из самого первого нода. Хотя, если заглянуть в ноду, то видно что данные каждый раз разные, но строка

node.SelectSingleNode("XPath")

все равно выдает данные из первой ноды. Что я делаю не так? Код:
Листинг программы
  1. var htmldoc = new HtmlAgilityPack.HtmlDocument();
  2. var s = await Steam.GetGameList("29", i.ToString(), "Price_ASC");
  3. htmldoc.LoadHtml(s.RestResponse.Content);
  4. var nodes = htmldoc.DocumentNode.SelectNodes("//*[@id='search_result_container']/div[2]/a");
  5. foreach (var node in nodes)
  6. {
  7. Game g = new Game();
  8. g.link = node.Attributes["href"].Value;
  9. g.name = node.SelectSingleNode("//div[2]/span").InnerText;
  10. g.price = node.SelectSingleNode("//div[6]").InnerText.Trim();
  11. g.image = node.SelectSingleNode("//div[1]/img").Attributes["src"].Value;
  12. listGame.Add(g);
  13. }
Класс Game:
Листинг программы
  1. public class Game
  2. {
  3. public string name { get; set; }
  4. public string price { get; set; }
  5. public string image { get; set; }
  6. public string link { get; set; }
  7. public override string ToString()
  8. {
  9. return name;
  10. }
  11. }

Решение задачи: «.NET 4.x HtmlAgilityPack шалит»

textual
Листинг программы
  1.             int i = 0;
  2.             foreach (var node in nodes)
  3.             {
  4.                 Game g = new Game();
  5.                 g.link = node.Attributes["href"].Value;
  6.                 g.name = node.SelectNodes("//div[2]/span")[i].InnerText;
  7.                 g.price = node.SelectNodes("//div[6]")[i].InnerText.Trim();
  8.                 g.image = node.SelectNodes("//div[1]/img")[i++].Attributes["src"].Value;
  9.                 listGame.Add(g);
  10.  
  11.                 MessageBox.Show(g.link + Environment.NewLine +
  12.                                 g.name+ Environment.NewLine +
  13.                                 g.price + Environment.NewLine +
  14.                                 g.image + Environment.NewLine);
  15.             }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.917 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут