#asp.net #.net #web-scraping #html-agility-pack
#asp.net #.net #веб-очистка #html-agility-pack
Вопрос:
Что может быть причиной того, что он возвращает null в selectnodes?
HtmlWeb web = new HtmlWeb();
HtmlDocument doc = web.Load("https://www.wired.com/most-popular/");
var headerNames = doc.DocumentNode.SelectNodes("//a[@class='archive-item-component__title']").ToList();
string listData = "";
foreach(var item in headerNames)
{
listData = Environment.NewLine item.InnerText;
}
Console.WriteLine(listData);
Комментарии:
1. 1. Не используйте HtmlAgilityPack, используйте AngleSharp. 2 Скорее всего, страница создается с использованием рендеринга на стороне клиента с использованием чего-то вроде React, поэтому вы не можете ее очистить.
Ответ №1:
Причина в том, что класс «archive-item-component__title» на веб-сайте указан для тегов h2, а не для тегов a.
Выбор ваших имен заголовков, как это работает:
doc.DocumentNode.SelectNodes("//h2[@class='archive-item-component__title']");
PS: вам не нужно звонить.Для получения результатов SelectNodes с помощью функции ToList() вы можете перебирать HtmlNodeCollection как есть.