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

Joe*_*ack 12 .net c# 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);
}
Run Code Online (Sandbox Code Playgroud)

但我也想找到数据网址.

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

    <div class="cbreplay" data-url="2012\edmonton\partien.pgn"></div>
Run Code Online (Sandbox Code Playgroud)

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

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

das*_*ash 20

以下应该做你想要的:

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

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

如果除了具有此属性的div之外的节点,那么//*[@data-url]应该这样做.

  • 使用`*`而不是`div` - ""//*[@ data-url]"`可能更灵活.那些darn html作者不断改变他们的HTML! (2认同)