使用HTMLAgilityPack选择具有属性data-url的元素

时间:2012-07-10 08:10:38

标签: c# .net html-agility-pack

我正在写一个小型的下载 - 机器人,就是在自己的下层搜索链接。

我需要找到的是html-Page中的所有链接(.jpg文件的链接以及.pgn,.pdf,.html,......文件的链接)

我使用html-agilitypack查找所有a-href链接。

示例代码:

foreach (HtmlNode link in htmlDocument.DocumentNode.SelectNodes("//a[@href]"))
{
    HtmlAttribute attribute = link.Attributes["href"];
    links.Add(attribute.Value);
}

但我也想找到数据网址。

我必须使用什么XPath语法来查找data-urls。 htmlcode中的示例数据url:

    <div class="cbreplay" data-url="2012\edmonton\partien.pgn"></div>

我需要这个例子中的“2012 \ edmonton \ partien.pgn”。我如何用XPath语法实现这一点?

最好的问候,如果我犯了一些不好的错误,请告诉我。这是我的第一个问题。

1 个答案:

答案 0 :(得分:19)

以下应该做你想做的事:

foreach (HtmlNode divNode in htmlDocument.DocumentNode.SelectNodes("//div[@data-url]"))
{
    HtmlAttribute attribute = divNode.Attributes["data-url"];
    links.Add(attribute.Value);
}

有效地,语句//div[@data-url]应该选择具有data-url属性的所有节点。然后我们拿出这个属性。

如果除了具有此属性的div之外的节点,那么//*[@data-url]应该可以解决这个问题。