zoukankan      html  css  js  c++  java
  • 【转】HtmlParser初探使用Nodefilter和Visitor进行网页分析

    最近在做html页面转化成jsf页面的工作,尝试过使用正则表达式、dom4j等方法,都没有取得很好的结果。(html-->jsf会另写一篇文章进行讨论)现在在使用htmlparser对html进行解析,对于html页面的解析htmlparser是一个功能比较强大的工具(相关下载:http://sourceforge.net/projects/htmlparser/)。以下是经常使用的对页面解析的两种方法,简单的总结了这两种方法的实现步骤,希望在这里抛砖引玉,有这方面编程经验的们,能参与讨论,怎样用它来进行html-->jsf的转换。

    一、利用NodeFilter对网页进行分析
    1、生成一个Parser
    a.通过url提取网络上的网页
    Parser parser = new Parser();
    parser.setURL("http://www.yahoo.com.cn");
    b.提取本地网页文件
    通过读文件把网页文件转化成字符串;
    Parser parser=Parser.createParser(html,charset);
    2、利用NodeFilter做一个filter
    a.利用Tag Name
    NodeFilter filter=new TagNameFilter("IMG");
    b.利用Tag Class
    NodeFilter filter = new NodeClassFilter(ImageTag.class);
    3、通过匹配filter,得到所有符合条件的Tag
    NodeList list=parser.extractAllNodesThat(filter);
    for(int i=0;i String content=list.elementAt(i).toHtml();//得到符合条件的Tag内容
    如果针对具体情况进行更加详细的处理,则:
    ImageTag imageTag=(ImageTag)list.elementAt(i);
     …………
    }
    然后根据需要做相应的处理。
     
    二、利用Visitor对网页进行分析
    1、生成一个Parser 
    a.通过url提取网络上的网页
    Parser parser = new Parser();
    parser.setURL("http://www.yahoo.com.cn");
    b.提取本地网页文件
    通过读文件把网页文件转化成字符串;
    Parser parser=Parser.createParser(html,charset);
    2、用visitor访问页面
    ex:ObjectFindingVisitor visitor=new ObjectFindingVisitor();
        parser.visitAllNodesWith(visitor);
    3、通过特定的visitor得到符合条件的Tag
    Node[] nodes=visitor.getTags();
    for(int i=0;i ImageTag imageTag=(ImageTag)nodes[i];
     …………
    //根据需要做特定处理
    }

  • 相关阅读:
    [笔记]JavaScript获得对象属性个数的方法
    [转]去除inline-block元素间间距的N种方法
    表单提交成功如何弹出提示
    [笔记]CSS样式声明顺序
    [转]浏览器渲染机制——一定要放在body底部的js引用
    [笔记]使用clearfix清除浮动
    [转]jQuery.validate插件在失去焦点时执行验证代码
    验证常用正则表达式
    字符串与Objec之间互相转换
    $.extend()
  • 原文地址:https://www.cnblogs.com/5tao/p/1859782.html
Copyright © 2011-2022 走看看