`

htmlparser的简单使用说明

    博客分类:
  • html
阅读更多

一、DOM过滤

    1. 根据attribute过滤
        Parser parser = new Parser(htmlString);// or new Parser(url)
        NodeFilter filter = new HasAttributeFilter("class", "sidebar");// 本例为根据class过滤,当然可以标签中的任意attribute
        NodeList nodelist = parser.extractAllNodesThatMatch(filter);

    2. 根据tag过滤
        NodeList nodelist = parser.parse(new TagNameFilter("table"));// 根据table标签过滤
        or
        NodeList  nodelist = parser.parse(new NodeClassFilter(TableTag.class));

    3. 层级and过滤
        // 如查找示例1中class="sidebar"下面的tr标签
        NodeFilter filter = new HasAttributeFilter("class", "sidebar");
        NodeFilter f = new AndFilter(new TagNameFilter("tr"), new HasParentFilter(filter));
        NodeList nodelist = parser.parse(f);
        or
        // 查找所有table下面的tr
        NodeFilter f = new AndFilter(new TagNameFilter("tr"), new HasParentFilter(new TagNameFilter("table")));
        NodeList nl = parser.parse(f);

    4. or满足
        Parser parser = new Parser(url);
        // parser.setEncoding("UTF-8");
        // 过滤得到class为toptext,或者id为sample的内容
        HasAttributeFilter[] f = new HasAttributeFilter[] {
    new HasAttributeFilter("class", "toptext"),
    new HasAttributeFilter("id", "sample")
        };
        NodeFilter nodeFilter = new OrFilter(f);

       // and过滤类似



二、NodeList遍历及子节点
    1. for循环
       for (int i = 0; i < nodeList.size(); i++) {
            Node node = nodeList.elementAt(i);
       }

    2. SimpleNodeIterator
       SimpleNodeIterator iterator = nodeList.elements();
       while(iterator.hasMoreNodes()) {
            Node node = iterator.nextNode();
       }

    3. 子节点
       NodeList pList = node.getChildren();// 获取子节点
    


三、节点判断
    // 判断node是否为head标签
    if (node instanceof org.htmlparser.tags.HeadingTag) {...}

    // 判断node是否为div标签
    if (node instanceof org.htmlparser.tags.Div) {...}

    // 判断node是否为p标签
    if (node instanceof org.htmlparser.tags.ParagraphTag) {...}

    // MORE ...

    // etc:判断当前div是否class为section
    if ("section".equals(((org.htmlparser.tags.Div) node).getAttribute("class"))) {...}


四、内容获取

    // 获取节点源html内容
    node.toHtml()
   
    // 获取节点文本内容,如输入“<td>abc</td>”,输出“abc”
    node.toPlainTextString
分享到:
评论

相关推荐

    Java使用HtmlParser实现简单的网络爬虫.zip

    Java使用HtmlParser实现简单的网络爬虫,爬虫DEMO,Java 使用 HtmlParser 抓取网页数据并解析以及说明

    使用 HttpClient 和 HtmlParser 实现简易爬虫

    这篇文章介绍了 HtmlParser 开源包和 HttpClient 开源包的使用,在此基础上实现了一个简易的网络爬虫 (Crawler),来说明如何使用 HtmlParser 根据需要处理 Internet 上的网页,以及如何使用 HttpClient 来简化 Get ...

    spring 的MimeMessageHelper 邮件引擎

    包含发送简单邮件、附件邮件、通过velocity模板发送邮件的工具类 所需要的jar文件 velocity-tools-1.4.jar velocity-tools-view-1.4.jar velocity-1.6.2.jar ...spring 的MimeMessageHelper 邮件引擎方法使用说明文档

    HttpClient以及获取页面内容应用

    使用HttpClient发送请求、接收响应很简单,一般需要如下几步即可。 1.创建HttpClient对象。 HttpClient client = new HttpClient(); 2.创建请求方法的实例,并指定请求URL。如果需要发送GET请求,创建HttpGet对象;...

    java开源包8

    Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信...

    JAVA上百实例源码以及开源项目源代码

    Java从网络取得文件 1个目标文件 简单 Java从压缩包中提取文件 1个目标文件 简单 Java存储与读取对象 1个目标文件 如题 Java调色板面板源代码 1个目标文件 摘要:Java源码,窗体界面,调色板 使用Java语言编写的一款...

    java开源包1

    Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信...

    java开源包11

    Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信...

    java开源包2

    Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信...

    java开源包3

    Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信...

    java开源包6

    Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信...

    java开源包5

    Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信...

    java开源包10

    Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信...

    java开源包4

    Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信...

    java开源包7

    Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信...

    java开源包9

    Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信...

    java开源包101

    Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信...

    Java资源包01

    Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信...

    JAVA上百实例源码以及开源项目

     Java语言开发的简洁实用的日期选择控件,源码文件功能说明:  [DateChooser.java] Java 日期选择控件(主体类) [public]  [TablePanel.java] 日历表格面板  [ConfigLine.java] 控制条类  [RoundBox.java] ...

Global site tag (gtag.js) - Google Analytics