使用HTMLAgilityPack選擇具有屬性data-url的元素

.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);
}

但我也想找到數據網址。

我必須使用什麼XPath語法來查找data-urls。 htmlcode中的示例數據url:

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

我需要這個例子中的“2012 \ edmonton \ partien.pgn”。我如何用XPath語法實現這一點?

最好的問候,如果我犯了一些不好的錯誤,請告訴我。這是我的第一個問題。

一般承認的答案

以下應該做你想要的:

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]應該執行該操作。




許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因