首页 > 代码库 > HtmlAgilityPack企业数据导入解析小结(html分析)

HtmlAgilityPack企业数据导入解析小结(html分析)

前段时间公司在山铝地磅机房拷贝数据,把数据录入到自己的系统中,想将地磅的数据自动导入,我去看了下,发现导出文件格式是html,好事多磨的找到了HtmlAgilityPack这个神器。

代码比较乱,思路也没理清,不过最终效果不错。2015-01-25


 

这是需要导入的文件,需要的都是表格内部单元格的数据,下面是其中一行

技术分享

 

 


 

 

 

下载导入dll的步骤就不赘述了,百度都有的

一、声明HtmlAgilityPack.htmlDocument对象,为该实例加载需要导入的html数据文件(好多做网页分析的是下载下来html到内存,然后由HtmlAgilityPack读取),然后选择你要获取节点标签,我这里是<font></font>,SelectNodes("//font[@*]"),可以自己定义,也可以多根据需求多定义几个,这样,所有font标签内的数据都读取到了节点数组HtmlNodeCollection内了,接下来就从这里根据自己需要获取需要的数据就行了。

 1 using HtmlAgilityPack; 2  3 //HtmlAgilityPack自带加载html为htmlDocument 4  5 HtmlAgilityPack.HtmlDocument hd = new HtmlAgilityPack.HtmlDocument(); 6  7 hd.Load(FilePath, UTF8Encoding.UTF8); 8  9 HtmlNode rootNode = hd.DocumentNode;10 11 HtmlNodeCollection categoryNodeList = rootNode.SelectNodes("//font[@*]");//根据xpath获取节点树

 

 

 


二、简单介绍下如何在获取到的节点数组中遍历到自己需要的数据

1 
//foreach是遍历效果最高的
//获取导入的总车数
foreach (HtmlNode item in categoryNodeList)2 {3 if (item.InnerText.Contains("车数"))4 {5 CountTemp = Int32.Parse(categoryNodeList[categoryNodeList.IndexOf(item) + 1].InnerText.Trim());6 break;7 }8 }

总结

为了搞这个找了好几个插件,都不如意,比如SgmlReaderDll、Winista.HtmlParser,效率和适用性上以及功能上都不如HtmlAgilityPack,正则表达式也试过,html太复杂了,正则表达式就不会写了,懒人勿喷。附上几个下载的插件http://pan.baidu.com/s/1bno4SUF

 

HtmlAgilityPack企业数据导入解析小结(html分析)