0

Всем привет! Подскажите пжлст, делаю первые шаги в парсинге. Нужно распарсить сайт Авито и вытащить список товаров. Я нашел div,содержащий этот список и пытаюсь получить его, но результат возвращает null. В чем моя ошибка?

        HtmlWeb web = new HtmlWeb();
        HtmlDocument document = web.Load("https://www.avito.ru/all/noutbuki/apple-ASgCAQICAUCo5A0U9Nlm?user=1");
    HtmlNode[] nodes = document.DocumentNode.SelectNodes("//div[@class=items - items - kAJAg]").ToArray();
    foreach (HtmlNode item in nodes)
    {
        Console.WriteLine(item.InnerHtml);
    }

  • В том что вы этот div смотрите в инспекторе браузера, а не в ответе от сервера. Смотрите вкладку "сеть" и ответ на GET запрос в браузере, который вы пытаетесь повторить. Можете еще в консоль вывести: Console.WriteLine(document.DocumentNode.InnerHtml);. Вывод вас удивит. items - items - kAJAg и вот эти пробелы выглядят странно, их не должно быть, будьте внимательны. – aepot Sep 21 '22 at 18:16
  • Можете более подробно расписать? Руководствуюсь этой документацией https://html-agility-pack.net/select-nodes .Я же сделал запрос, дальше мне должен вернуться список узлов... – Alex_Tairov Sep 21 '22 at 18:37
  • 2
    Смотрите, когда вы заходите на сайт, тот вам может дать некую "заглушку", некий каркас, вид сайта, без данных. Когда эта заглушка у вас прогрузится, у вас запустятся JS скрипты, которые начнут отправлять запросы на конкретные API сайта, на основе которых он будет формировать вывод на вашем экране. Собственно, когда что-либо парсите, проанализируйте сначала сайт, посмотрите, как и что он получает, где данные, ибо как вы уже думаю поняли, не всегда они в HTML. Возьмите HTML из document и работайте с ним. Как ловить запросы можете почитать тут. – EvgeniyZ Sep 21 '22 at 19:02
  • Большое спасибо! – Alex_Tairov Sep 21 '22 at 19:44

0 Answers0