如何在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合法吗? 是的,了解原因