извлекать данные с помощью веб-очистки HtmlAgilityPack c#

#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 как есть.