HTML Ловкость - в приведенном ниже коде обнаружена только одна запись - PullRequest
0 голосов
/ 28 января 2020

Я пытаюсь получить ВСЕ теги div с определенным классом.

Код ниже работает нормально, но возвращается только одна запись.

Что я делаю не так?

            using (WebClient client = new WebClient())
            {
                HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
                string html = client.DownloadString("https://myurl.com");

                doc.LoadHtml(html);

                var findDivs = doc.DocumentNode.Descendants().Where(d =>
                            d.Attributes.Contains("class") && d.Attributes["class"].Value.Contains("list-mode-table-wrapper")
                        ).Select(x => x).ToList();
            }

1 Ответ

0 голосов
/ 28 января 2020

Я бы рекомендовал использовать SelectNodes для получения всех тегов div с указанным c именем класса.

    var findDivs = doc.DocumentNode.SelectNodes("//div[@class='list-mode-table-wrapper']")?.ToList();

SelectNodes использует XPath, который ищет весь документ при использовании //. Это будет искать всю страницу для div, которые имеют это имя класса. Для всего, что находится под div с этим классом, вы можете использовать / для указания нужного вам элемента (("//div[@class='xyz']/table/tbody/etc")).

Поскольку SelectNodes возвращает ноль, если ничего не найдено, вы можете использовать проверку ошибок, чтобы убедиться, что findDivs не равен нулю, когда вы продолжаете работать с ним.

...