C# 解析网页HTML用HtmlAgilityPack插件

1,056 阅读1分钟

引用HtmlAgilityPack插件,可以用HtmlAgilityPack类,例子如下:

var doc = new HtmlAgilityPack.HtmlDocument();
// 网页源代码,如有缺少,就补充完整.
if (html.IndexOf("<html>") >= 0 && html.IndexOf("</html>") > 0) doc.LoadHtml(html);
else
{
     if (html.IndexOf("<body>") >= 0 && html.IndexOf("</body>") > 0) doc.LoadHtml("<html>" + html + "</html>");
     else doc.LoadHtml("<html><body>" + html + "</body></html>");
}
// 获得解析文档根节点
var docNode = doc.DocumentNode;
// 使用XPath语法表达式,Select 查找出一个符合条件的节点
var title = docNode.SelectSingleNode("//div[@id='divContent']//h2[@class='left_title']");
// title 标题所在的节点,判断是否存在
if (title == null) return;
// 如果存在,就继续处理...

SelectSingleNode("使用XPath语法"), 不会用的, 请先看下XPath教程, 再来尝试...

XPath 表达式描述
nodename选取此节点的所有子节点。
/从根节点选取。
//从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。
.选取当前节点。
..选取当前节点的父节点。
@选取属性。