Адресация пакета гибкого программирования Html

#c# #.net #html-agility-pack

#c# #.net #html-agility-pack

Вопрос:

в этом Html

 <div class="contacts-list">
    <h4 class="title">Contact</h4>
                <div class="contact-phone">
            <span class="icon"><i class="ee-phone"></i></span><span class="type">تلفن</span>
            <span class="contact-data">
                                        <a dir='auto' href='tel:05138946697'>05138946697</a>                                    </span>
        </div>
  

Мне нужно извлечь значение тега «a», но я должен быть уверен, что оно находится внутри тега «div» с классом «contact-phone».

Я не совсем понимаю, как я должен это делать, может кто-нибудь мне помочь?

Комментарии:

1. Я не знаю html agility pack, но поскольку он основан на xpath, вы должны иметь возможность использовать //div[contains(@class,'contact-phone')]/a (примечание: при этом также будет выбран элемент div с классом, подобным contact-phone-something)

2. @MarkBaijens ссылка вложена в span тег, поэтому /a она не будет нацелена на нее.

3. @derloopkat //a тогда

Ответ №1:

итак, я получаю нужное мне значение следующим образом, используя пакет гибкости HTML и Xpath

 foreach (HtmlNode node in htmlDocument.DocumentNode.SelectNodes("//div[@class='"   "contact-phone"   "']/span[@class='"  "contact-data"   "']/a"))
                        {
                            value = node.InnerText;
                        }
  

Комментарии:

1. Если вы знакомы с JS querySelector , попробуйте дополнение NuGet Fizzler.Systems.HtmlAgilityPack . Он предоставляет HtmlNode.QuerySelector метод, который принимает тот же синтаксис запроса, что и в JS.