首页 文章

使用HtmlAgilityPack仅选择特定DIV中的项目

提问于
浏览
12

我正在尝试使用HtmlAgilityPack从包含在声明为 <div class='content'> 的div中的页面中提取所有链接 . 但是,当我使用下面的代码时,我只需在整个页面上获取所有链接 . 这并不像每次调用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);
}

这是预期的行为吗?如果是这样,我如何让它做我期待的事情?

1 回答

  • 19

    这将有效:

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

    此外,您可以在单个选择器中执行此操作:

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

    另请注意, link.Value 未定义 HtmlNode ,因此您的代码无法编译 .

相关问题