C# HtmlAgilityPack解析HTML小问题记录

时间:16-11-12 栏目:C#开发 作者:kyle 评论:0 点击: 2,193 次

 

周末弄个小项目写了一个C#的HtmlAgilityPack采集小程序。

 

在使用时,遇到一个小问题。SelectSingleNode进行Xpath过滤。

 

列表页有10个列表,包在<article ****></article>标签里面。

 

第一步使用时没有问题。用HtmlAgilityPack的SelectNodes(xpath)实现,取出article的Xpath表达式为//article。

 

取出来之后,在遍历每个article时遇到了问题。

 

每个article里面,有一个class=”blog-link”的A标签,里面有我需要采集的这篇文章的链接地址。

 

在遍历 时,每次取出来的Blog-link是一样的。我用的Xpath表达式是://a[@class=\"reblog-link\"]。

 

后来网上查了一下资料,发现是Xpath的问题。我还一度认为是一个Bug。

 

//开头的Xpath表达式会从整个HTML节点中去匹配命中节点。需要在前面加一个.代表从当前节点(我要的article节点)去取,而不是去取整个文章的节点。

 

伪代码大致如下:

var listArticles=doc.RootNode.SelectNodes(“//article”);

 

foreach( var item in listArticles)

{

var linkNode=item.SelectSingleNode(“.//a[@class=\"reblog-link\"]”);

string linkHref=linkNode.GetAttributeValue("href", "");

Console.WriteLine(“链接地址为:”+linkHref);
}

 

Xpath真是一利器,在采集和抓取的时候,相当给力。

成都SEO小五嚎2句: 本文是(成都SEO小五)辛苦弄出来的,转载成都SEO小五原创的请保留链接: C# HtmlAgilityPack解析HTML小问题记录,3Q

C# HtmlAgilityPack解析HTML小问题记录:等您坐沙发呢!

来给哥评论评论


------====== 小五公告 ======------
成都SEO小五,专注成都搜索引擎优化。
小五善长站内外优化,C#、PHP开发,中英文SEO,Google中英文和百度优化技术。欢迎群内交流。伸手党请绕路,求资源的请绕开,求问题解答的请进群内交流。开放了一个QQ交流群:160750032。加入验证时请标注任何SEO相交字眼。友情链接直接Q我,收录正常,内容大部份原创、SEO或者程序开发、网络营销、线上推广等相关行业即可。

常用工具

赞助广告

来看过哥的人