<div class="clearfix">
<i class="_2m_3 _3-91 _8o _8s lfloat _ohe img sp_sJ1LAYlqgzt sx_2abc43"></i>
<div class="_42ef">
<div>
<div class="_50f3">Живет в <a class="profileLink" href="https://www.facebook.com/pages/%D0%9B%D0%BE%D1%81-%D0%90%D0%BD%D0%B4%D0%B6%D0%B5%D0%BB%D0%B5%D1%81/110970792260960?ref=br_rs" data-hovercard="/ajax/hovercard/page.php?id=110970792260960" data-hovercard-prefer-more-content-show="1">Лос-Анджелес</a>
</div>
<span class="_50f8"></span>
</div>
</div>
</div>
Мне нужно от сюда сохранить "Живёт в" и "Лос-Анджелес". Делаю так, но var text1 и var text2 всегда null. В чём проблема?
HtmlAgilityPack.HtmlDocument HD = new HtmlAgilityPack.HtmlDocument();
HD.LoadHtml(sourceCode);
var text1 = HD.DocumentNode.SelectNodes("//div[@class='_42ef']/div/div[@class='_50f3']/text()");
var text2 = HD.DocumentNode.SelectNodes("//div[@class='_42ef']/div/div[@class='_50f3']/a");
Я кажется понял в чём дело. Нужная часть кода находится между тегами <!-- -->. Регулярками я сохранил то что записано в тегах и добавил <!DOCTYPE html> к началу полученной строки. И всё заработало
Небольшое отступление. Написано по размышлениям над комментариями к ответу.
HTML - не является XML-документом. Поэтому парсить его при помощи XML-парсеров - некорректно. Используйте для этого HTML-парсеры или на крайний случай регулярные выражения.
Можно прочитать весь текст и потом уже с ним работать. Названия классов, как я понимаю, могут поменяться. Да и структура тоже.
string content = ...; //текст html
var reader = new StringReader(content);
XPathDocument doc = new XPathDocument(reader);
var nav = doc.CreateNavigator();
foreach (XPathNavigator n in nav.Select("div"))
{
Console.WriteLine(n.Value);
}
Выведет: Живет в Лос-Анджелес
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники