Получить тег href внутренний текст из html (html пакет agility) - PullRequest
0 голосов
/ 19 сентября 2019

Я успешно извлекаю имена файлов из всех тегов href в html ниже и добавляю их в список.

HTML:

<ul class="resourcelist">
    <li><a href="/upload/Article/07.pdf" target="_blank"><img src="/assets/images/pdf.png" /> <strong>SPEC SHEET: </strong> d07</a></li>
    <li><a href="/upload/Article/73.pdf" target="_blank"><img src="/assets/images/pdf.png" /> <strong>ASSEMBLY SHEET: </strong> d73</a></li>
    <li><a href="/upload/Article/75.pdf" target="_blank"><img src="/assets/images/pdf.png" /> <strong>ASSEMBLY SHEET: </strong> d75</a></li>
    <li><a href="/upload/Article/71.pdf" target="_blank"><img src="/assets/images/pdf.png" /> <strong>INSTALLATION SHEET: </strong> d71</a></li>
</ul>

C # код для разбора html:

    public List<string> LinksList = new List<string>();
    public List<string> GetLinks()
        {
            var doc = new HtmlDocument();
            doc.LoadHtml(GetProductDescription("TechnicalSpecifications"));
            HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//a[@href]");
            foreach (var node in nodes)
            {
                var href = node.Attributes["href"].Value.Split('/')[3];
                if (!LinksList.Contains(href))
                {
                    LinksList.Add(href);
                }

            }
            return LinksList;
        }

Есть ли какой-либо возможный способ нацеливания на все, начиная с <strong> + текста до закрытия тега?(в основном все, чего нет в <...>)

Я просмотрел тонны вопросов по SO, и, похоже, ответ на этот вопрос не найден.

Пример вывода:

СПЕЦИФИКАЦИЯ: d07

Заранее спасибо.

1 Ответ

2 голосов
/ 19 сентября 2019

Вы фактически просто собираете внутренний текст узлов.Сделайте это:

var texts = doc.DocumentNode
    .SelectNodes("//a[@href]")
    .Select(n => n.InnerText)
    .Distinct()
    .ToList();
...