如何在c#的HTML源代码中按类或id抓取元素
本文关键字:id 元素 抓取 源代码 HTML | 更新日期: 2023-09-27 18:11:38
我试图根据类或id名称从HTML源抓取元素,使用c# windows窗体应用程序。我使用WebClient将源放入字符串中,并使用HtmlDocument将其插入htmllagilitypack中。
但是,我找到的所有使用htmllagilitypack包的示例都是基于标签解析并查找项。我需要找到一个特定的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的快速解释:
-
//
表示在路径中搜索所有地方,如果要匹配多个 则使用 -
*
表示匹配任何类型的节点 -
[]
定义"谓词",基本上是检查相对于该节点的属性 -
[@id='"my_control_id'"]
表示查找具有属性名为"id"的值为"my_control_id"的节点
SelectNodes