Пытался спарсить страницу на Selenium через XPath, выдает нужную информацию. А на HtmlAgilityPack выдает одно и тоже не верное значение. Уже бьюсь 2-ой день: экранировал кавычки, прямой путь давал, указывал class этого элемента в котором текст. Голова уже дымиться) Какой нужно задать XPath?
using HtmlAgilityPack;
string url = (@"https://www.g2a.com/ak-47-redline-field-tested.html");
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
HtmlNodeCollection nodes;
WebClient webClient = new WebClient();
webClient.Encoding = Encoding.UTF8;
webClient.Headers.Add("user-agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2906.0 Safari/537.36");
string html = webClient.DownloadString(url);
doc.LoadHtml(html);
nodes = doc.DocumentNode.SelectNodes(".//*[@id=\"g2a-offer-wrapper\"]//div[4]/div[1]//text()");
string outputText = " ";
foreach (HtmlNode HN in nodes)
{
outputText = HN.InnerText;
}
listBox1.Items.Add(outputText);
Это 1 из примеров, всегда выводит 0,00 руб.
У вас проблема вовсе не в XPath. Дело в том, что цена подгружается через скрипты, но DownloadString не возвращает результат их выполнения. Именно поэтому вам возвращается 0,00 руб.
Если воспользоваться Fiddler`ом, то мы увидим, что после нашего целевого запроса выполняется еще несколько.
Один из них, помимо прочего и возвращает цену продукта:
"f":"356,46
Соответственно, вам нужно делать все эти запросы через код, чтобы спарсить цену.
Похоже у вас опечатка в цикле, поменяйте на:
foreach (HtmlNode HN in nodes)
{
outputText = HN.InnerText;
listBox1.Items.Add(outputText);
}
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости