java使用htmlparser提取网页纯文本例子

时间:2022-06-14 12:47:05 


package com.test;

import org.htmlparser.Node;
import org.htmlparser.NodeFilter;
import org.htmlparser.Parser;
import org.htmlparser.filters.TagNameFilter;
import org.htmlparser.tags.TableTag;
import org.htmlparser.util.NodeList;

/**
* 标题:利用htmlparser提取网页纯文本的例子
*/
public class TestHTMLParser {
  public static void testHtml() {
    try {
        String sCurrentLine;
        String sTotalString;
        sCurrentLine = "";
        sTotalString = "";
        java.io.InputStream l_urlStream;
        java.net.URL l_url = new java.net.URL("http://www.ideagrace.com/html/doc/2006/07/04/00929.html");
        java.net.HttpURLConnection l_connection = (java.net.HttpURLConnection) l_url.openConnection();
        l_connection.connect();
        l_urlStream = l_connection.getInputStream();
        java.io.BufferedReader l_reader = new java.io.BufferedReader(new java.io.InputStreamReader(l_urlStream));
        while ((sCurrentLine = l_reader.readLine()) != null) {
          sTotalString += sCurrentLine+"/r/n";
        //  System.out.println(sTotalString);
        }
        String testText = extractText(sTotalString);
        System.out.println( testText );

    } catch (Exception e) {
        e.printStackTrace();
    }

  }

  public static String extractText(String inputHtml) throws Exception {
    StringBuffer text = new StringBuffer();
    Parser parser = Parser.createParser(new String(inputHtml.getBytes(),"GBK"), "GBK");
    // 遍历所有的节点
    NodeList nodes = parser.extractAllNodesThatMatch(new NodeFilter() {
        public boolean accept(Node node) {
          return true;
        }
    });

    System.out.println(nodes.size()); //打印节点的数量
    for (int i=0;i<nodes.size();i++){
         Node nodet = nodes.elementAt(i);
         //System.out.println(nodet.getText());
        text.append(new String(nodet.toPlainTextString().getBytes("GBK"))+"/r/n");         
    }
    return text.toString();
  }

  public static void test5(String resource) throws Exception {
    Parser myParser = new Parser(resource);
    myParser.setEncoding("GBK");
    String filterStr = "table";
    NodeFilter filter = new TagNameFilter(filterStr);
    NodeList nodeList = myParser.extractAllNodesThatMatch(filter);
    TableTag tabletag = (TableTag) nodeList.elementAt(11);

  }

  public static void main(String[] args) throws Exception {
    // test5("http://www.google.com");
    testHtml();
  }
}

标签:java,htmlparser
0
投稿

猜你喜欢

  • spring boot 注入 property的三种方式(推荐)

    2023-01-23 05:10:27
  • C#微信公众号开发之使用MessageHandler简化消息处理流程

    2022-04-12 12:12:34
  • Android WebView开发之自定义WebView工具框

    2023-01-12 13:41:43
  • SpringCloud Nacos + Ribbon 调用服务的实现方式(两种)

    2023-11-18 09:30:38
  • Spring Retry 重试实例详解

    2021-07-15 22:43:26
  • Java并发程序入门介绍

    2022-03-05 12:05:26
  • C#键盘鼠标钩子实例

    2021-10-18 21:05:24
  • 详解Java中clone的写法

    2023-09-08 17:00:43
  • Android简单使用PopupWindow的方法

    2023-09-13 19:51:22
  • Java多线程下载网图的完整案例

    2022-10-17 23:59:02
  • Quartz与Spring集成的两种方法示例

    2022-05-22 05:15:41
  • SpringBoot Web依赖教程

    2023-01-06 21:51:50
  • Java毕业设计实战之在线高中考试系统的实现

    2021-07-04 06:15:20
  • springboot openfeign从JSON文件读取数据问题

    2023-11-09 15:55:55
  • Spring如何更简单的读取和存储对象

    2023-09-30 00:32:14
  • C#开发Windows服务实例之实现禁止QQ运行

    2023-04-13 03:29:29
  • 详解Spring的两种代理方式:JDK动态代理和CGLIB动态代理

    2023-08-08 14:38:37
  • SpringSecurity实现访问控制url匹配

    2021-11-03 00:18:16
  • Android App开发中创建Fragment组件的教程

    2022-05-18 04:34:38
  • Springboot项目快速实现拦截器功能

    2022-10-05 12:34:50
  • asp之家 软件编程 m.aspxhome.com