上一篇介绍了C#解析HTML网页源码的一款组件神器--HtmlAgilityPack和提取循环列表数据的方法,今天在使用中遇到了一个新的问题,结合Xpath路径来提取循环列表中的一个HTML标签的InnerText,提取的时候需要判断是这个标签的class属性是否包含某个指定的属性值,google了一下(百度搜索没有相应的结果),利用Xpath的contains可以解决,代码如下:
//选择不包含class属性的节点 var result = node.SelectNodes(".//span[not(@class)]"); //选择不包含class和id属性的节点 var result = node.SelectNodes(".//span[not(@class) and not(@id)]"); //选择不包含class="expire"的span var result = node.SelectNodes(".//span[not(contains(@class,'expire'))]"); //选择包含class="expire"的span var result = node.SelectNodes(".//span[contains(@class,'expire')]");另一种解析方式,假如我们需要根据div的class属性是否包含post值来提取div中的InnerText:
<div id="post-405" class="post-405 post type-post status">inner text</div> <div id="post-105" class="post-105 post type-post status">inner text</div> <div id="post-5" class="post-5 post type-post status">inner text</div>可以用以下方法来提取符合条件的所有HtmlNode节点
var results = doc.DocumentNode .Descendants("div") .Where(x=>x.Attributes.Contains("class") && x.Attributes["class"].Value.Contains("post"));提取得到节点数据之后,根据实际处理即可。
版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。
发表评论
登录用户才能发表评论, 请 登 录 或者 注册