Выберите только объекты в определенном использовании DIV HtmlAgilityPack

Я пытаюсь использовать 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);
}

Действительно ли это - ожидаемое поведение? И если так, как я заставляю это делать то, что я ожидаю?

12
задан Adam Haile 20 May 2010 в 15:38
поделиться

1 ответ

Это будет работать:

node.SelectNodes("a[@href]")

Кроме того, вы можете сделать это с помощью одного селектора:

doc.DocumentNode.SelectSingleNode("//div[@class='content']//a[@href]")

Также обратите внимание, что ссылка. Значение не определено для HtmlNode , поэтому ваш код не компилируется.

19
ответ дан 2 December 2019 в 18:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: