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

 

原文地址:https://www.cnblogs.com/liuchuanxu/p/4248116.html