• 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

     

  • 相关阅读:
    这几个 IntelliJ IDEA 高级调试技巧,用了都说爽!
    SpringBoot:application.properties基本的参数配置
    SpringBoot:搭建第一个Web程序
    PO,VO,DAO,BO,POJO 之间的区别你懂吗?
    这篇文章太懂程序员了,扎心了
    委托和事件
    Log4net 封装用法
    js 在一个DIV前、中、后、插入新DIV
    关于装修
    JS查询class的名称
  • 原文地址:https://www.cnblogs.com/liuchuanxu/p/4248116.html
Copyright © 2020-2023  润新知