Html解析神器-HtmlAgilityPack,轻松快捷的帮助你解析html页面内容。 HtmlAgilityPack是一个开源的解析HTML元素的类库,是一个轻量化的插件。使用它来解析html网页中的元素非常便捷,甚至可以和js,jq操作媲美。下面来说说怎样添加它到项目中。
使用NuGet来添加该类库 搜索ScrapySharp,搜索出结果后然后点击安装。
 
2.如何使用 通过页面url和编码格式来加载html页面所有内容 string pageUrl = url;
WebClient wc = new WebClient();
byte[] pageSourceBytes = wc.DownloadData(new Uri(pageUrl));
string pageSource = Encoding.GetEncoding("gb2312").GetString(pageSourceBytes);
|
然后解析
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(pageSource);
HtmlNodeCollection keyNodes = doc.DocumentNode.SelectNodes("//div[@class='test']");
List keyWords = new List();
return doc.ToString();
|
HtmlNodeCollection
keyNodes =
doc.DocumentNode.SelectNodes("//div[@class='test']");这个就是获取页面中类名为的div(是一
个可以遍历的数组型)。同理,利用此方法可以获取类型为其他的div或者a元素或者img元素等等,也可以获取id为test的其他元素,以此类推。
获取元素后取值只需要调用innerText即可。
3.其他方法 1) public IEnumerable Ancestors()
获取当前节点的父节点列表(不包含自身)。
2) public IEnumerable Ancestors( string name)
以指定一个名称来获取父节点的列表(不包含自身)。
3) public IEnumerable AncestorsAndSelf()
获取当前节点的父节点列表(包含自身)。
4) public IEnumerable AncestorsAndSelf( string name)
以指定一个名称来获取父节点的列表(包含自身)。
获取子节点的系列方法:
1) public IEnumerable DescendantNodes()
获取当前节点下的所有子节点的列表,包括子节点的子节点(不包含自身)。
public IEnumerable DescendantNodesAndSelf()
获取当前节点下的所有子节点的列表,包括子节点的子节点(包含自身)。
public IEnumerable Descendants()
获取当前节点下的直接子节点的列表(不包含自身)。
public IEnumerable DescendantsAndSelf()
获取当前节点下的直接子节点的列表(包含自身)。
public IEnumerable Descendants( string name)
获取当前节点下的以指定名称的子节点列表。
public IEnumerable DescendantsAndSelf( string name)
获取当前节点下的以指定名称的子节点的列表(包含自身)。
public HtmlNode Element( string name)
获取第一个符合指定名称的直接子节点的节点元素。
public IEnumerable Elements( string name)
获取符合指定名称的所有直接子节点的节点列表。
public HtmlNodeCollection SelectNodes( string xpath)
获取符合指定的xpath的子节点列表。
public HtmlNode SelectSingleNode( string xpath)
|