zoukankan      html  css  js  c++  java
  • 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

     

  • 相关阅读:
    homebrew 安装 mpv
    Spring JdbcTemplate 两种方法的区别
    git .gitignore失效的解决办法
    git 分支修改bug应用场景
    url编码实践
    escape encodeuri encodeURIComponent 区别
    mysql命令gruop by报错this is incompatible with sql_mode=only_full_group_by
    服务器病毒问题解决- 阿里云 挖矿病毒,Circle_MI.png
    trim和replace的陷阱实践
    mysql 5.7.15 union order by 子查询排序不生效
  • 原文地址:https://www.cnblogs.com/liuchuanxu/p/4248116.html
Copyright © 2011-2022 走看看