如何在C#的HTML Source中按類或id獲取元素?

c# html html-agility-pack parsing

我試圖使用C#windows窗體應用程序從基於類或id名稱的HTML源中獲取元素。我使用WebClient將源代碼放入一個字符串中,並使用HtmlDocument將其插入HTMLAgilityPack。

但是,我在HTMLAgilityPack包中找到的所有示例都會解析並根據標記查找項目。我需要找到一個特定的id,比如html中的一個鏈接,並檢索標籤內的值。這是可能的,最有效的方法是什麼?我試圖解析ID的一切都給了我例外。謝謝!

一般承認的答案

您應該可以使用XPath執行此操作:

HtmlDocument doc = new HtmlDocument();
doc.Load(@"file.htm");

HtmlNode node = doc.DocumentNode.SelectSingleNode("//*[@id=\"my_control_id\"]");
string value = (node == null) ? "Error, id not found" : node.InnerHtml;

在這裡快速解釋xpath:

  • //表示在路徑中的任何位置搜索,如果匹配多個,則使用SelectNodes
  • *表示匹配任何類型的節點
  • []定義“Predicates”,它基本上檢查相對於此節點的屬性
  • [@id=\"my_control_id\"]表示查找具有名為“id”的屬性且值為“my_control_id”的節點

進一步參考




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