用DOM实现文章采集-HtmlAgilityPack实现html解析

Html Agility Pack 是CodePlex 上的一个开源项目。它提供了标准的DOM API 和XPath 支持!

下载地址:http://htmlagilitypack.codeplex.com/

示例代码:

HtmlDocument doc = new HtmlDocument();
doc.Load("file.htm");
foreach(HtmlNode link in doc.DocumentElement.SelectNodes("//a[@href"])
{
HtmlAttribute att = link["href"];
att.Value = FixLink(att);
}
doc.Save("file.htm");

注:解决HtmlAgilityPack得到的InnerText中有残留的script、样式的问题

foreach(var script in doc.DocumentNode.Descendants("script").ToArray())
script.Remove();
foreach(var style in doc.DocumentNode.Descendants("style").ToArray())
style.Remove(); string innerText = doc.DocumentNode.InnerText;

mark:

1、获取网页title:doc.DocumentNode.SelectSingleNode("//title").InnerText;

解释:XPath中“//title”表示所有title节点。SelectSingleNode用于获取满足条件的唯一的节点。

2、获取所有的超链接:doc.DocumentNode.Descendants("a")

3、获取name为kw的input,也就是相当于getElementsByName():

var kwBox = doc.DocumentNode.SelectSingleNode("//input[@name='kw']");

解释:"//input[@name='kw']"也是XPath的语法,表示:name属性等于kw的input标签。

推荐相关博客:

HtmlAgilityPack 之 HtmlNode类

http://www.cnblogs.com/kissdodog/archive/2013/02/28/2936950.html

【.NET】使用HtmlAgilityPack抓取网页数据

http://www.cnblogs.com/bomo/archive/2013/01/28/2879361.html

HTML解析利器HtmlAgilityPack

http://zhoufoxcn.blog.51cto.com/792419/595344

上一篇:表单input项使用label,同时引用Bootstrap库,导致input点击效果区增大


下一篇:Ubuntu17安装maven3.5.2