用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
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步