Есть ряд вопросов, которые не могу решить уже часа 2, буду благодарен за помощь.
(Для примера буду использовать следующий url для парса https://ru.wiktionary.org/wiki/%D1%85%D0%BE%D1%80%D0%BE%D1%88%D0%BE)
var config = Configuration.Default.WithDefaultLoader();
var address = "https://ru.wiktionary.org/wiki/%D1%85%D0%BE%D1%80%D0%BE%D1%88%D0%BE";
var context = BrowsingContext.New(config);
var document = context.OpenAsync(address).Result;
- Хочу получить элемент
div.vector-body#bodyContent
Режим разработчика любого браузера с легкостью находит его, но следующая строчка кода вернет мне null:
return document?.QuerySelector("div.vector-body#bodyContent") == null; //true
В чем может быть проблема? Что я делаю не так? Я, конечно, понимаю, что могу получить этот элемент другим способом, но что с этим не так?
- Основной вопрос: Хочу получить количество непосредственно дочерних элементов (находящихся на глубине 1) узла
div.mw-parser-output > *
Браузер правильно сообщает, что элементов 42:

А вот следующая строка кода вернет 3:
return document?.QuerySelectorAll("div.mw-parser-output > *").Length; //Возвращает 3
Буду рад каждому ответу, спасибо.

Console.WriteLine(await new HttpClient.GetStringAsync("https://url"));. Не забудьте у методаvoidпоменять наasync Task, чтобы сделать его асинхронным и использоватьawait. Никогда не используйте.Result. – aepot Aug 16 '21 at 13:08document.ToHtml().Contains("vector-body");, что выдаст? Вот простейший тест. Что касается "возвращает 3", тоже, смотрим html. – EvgeniyZ Aug 16 '21 at 13:12document.QuerySelectorAll? – hlooo Aug 17 '21 at 09:13document.ToHtml()), кидаете его в блокнот (или что вам удобней) и смотрите, есть ли там нужные данные и где они находятся. Если данных нет, то анализируете трафик, смотрите куда сайт идет за всем нужным. Конкретно на этом сайте все данные есть в HTML, просто не под теми тегами, что в браузере. – EvgeniyZ Aug 17 '21 at 10:23