2012-07-10 100 views
5

我正在编写一个Download-Roboter,它在较低层为它自己搜索链接。使用HTMLAgilityPack选择具有属性数据url的元素

我需要找到什么是一个HTML页面所有链接(.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); 
} 

但我想找到数据的URL为好。

我必须使用哪些XPath语法来查找数据URL。一个htmlcode中的示例数据url:

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

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

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

回答

11

以下应该做你想要什么:

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

有效,该声明//div[@data-url]应选择具有一个数据url属性的所有节点。然后我们拿出这个属性。

如果除了具有此属性的div以外的其他节点,则//*[@data-url]应该做到这一点。

+0

非常感谢,它的工作完美。 – 2012-07-10 08:38:52

+2

使用'*'而不是'div' - '“// * [@ data-url]''可能更灵活。那些darn html作者不断更改他们的html! – user3791372 2017-01-04 17:00:43

相关问题