Я пытаюсь использовать HtmlAgilityPack для получения по запросу всех ссылок от страницы, которые содержатся в отделении, объявил как <div class='content'>
Однако, когда я использую код ниже, я просто получаю ВСЕ ссылки на всей странице. Это действительно не имеет смысла мне, так как я называю SelectNodes от подузла, который я выбрал ранее (который при просмотре в отладчике только показывает HTML от того определенного отделения). Так, это похоже, это возвращается к очень корневому узлу каждый раз, когда я называю SelectNodes. Код, который я использую, ниже:
HtmlWeb hw = new HtmlWeb();
HtmlDocument doc = hw.Load(@"http://example.com");
HtmlNode node = doc.DocumentNode.SelectSingleNode("//div[@class='content']");
foreach(HtmlNode link in node.SelectNodes("//a[@href]"))
{
Console.WriteLine(link.Value);
}
Действительно ли это - ожидаемое поведение? И если так, как я заставляю это делать то, что я ожидаю?
Это будет работать:
node.SelectNodes("a[@href]")
Кроме того, вы можете сделать это с помощью одного селектора:
doc.DocumentNode.SelectSingleNode("//div[@class='content']//a[@href]")
Также обратите внимание, что ссылка. Значение
не определено для HtmlNode
, поэтому ваш код не компилируется.