#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
, попробуйте дополнение NuGetFizzler.Systems.HtmlAgilityPack
. Он предоставляетHtmlNode.QuerySelector
метод, который принимает тот же синтаксис запроса, что и в JS.