Java实现从Html文本中提取纯文本的方法

 更新时间:2018年05月21日 15:20:05   作者:fjssharpsword  
今天小编就为大家分享一篇Java实现从Html文本中提取纯文本的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

1、应用场景:从一份html文件中或从String(是html内容)中提取纯文本,去掉网页标签;

2、代码一:replaceAll搞定

//从html中提取纯文本 
public static String StripHT(String strHtml) { 
String txtcontent = strHtml.replaceAll("</?[^>]+>", ""); //剔出<html>的标签 
txtcontent = txtcontent.replaceAll("<a>\\s*|\t|\r|\n</a>", "");//去除字符串中的空格,回车,换行符,制表符 
return txtcontent; 
} 

3、代码二:正则表达式搞定

//从html中提取纯文本
	public static String Html2Text(String inputString) {
		String htmlStr = inputString; // 含html标签的字符串
		String textStr = "";
		java.util.regex.Pattern p_script;
		java.util.regex.Matcher m_script;
		java.util.regex.Pattern p_style;
		java.util.regex.Matcher m_style;
		java.util.regex.Pattern p_html;
		java.util.regex.Matcher m_html;
		try {
			String regEx_script = "<[\\s]*?script[^>]*?>[\\s\\S]*?<[\\s]*?\\/[\\s]*?script[\\s]*?>"; // 定义script的正则表达式{或<script[^>]*?>[\\s\\S]*?<\\/script>
	  String regEx_style = "<[\\s]*?style[^>]*?>[\\s\\S]*?<[\\s]*?\\/[\\s]*?style[\\s]*?>"; // 定义style的正则表达式{或<style[^>]*?>[\\s\\S]*?<\\/style>
	  String regEx_html = "<[^>]+>"; // 定义HTML标签的正则表达式
	  p_script = Pattern.compile(regEx_script, Pattern.CASE_INSENSITIVE);
	  m_script = p_script.matcher(htmlStr);
	  htmlStr = m_script.replaceAll(""); // 过滤script标签
	  p_style = Pattern.compile(regEx_style, Pattern.CASE_INSENSITIVE);
	  m_style = p_style.matcher(htmlStr);
	  htmlStr = m_style.replaceAll(""); // 过滤style标签
	  p_html = Pattern.compile(regEx_html, Pattern.CASE_INSENSITIVE);
	  m_html = p_html.matcher(htmlStr);
	  htmlStr = m_html.replaceAll(""); // 过滤html标签
	  textStr = htmlStr;
	 } catch (Exception e) {System.err.println("Html2Text: " + e.getMessage()); }
		//剔除空格行
		textStr=textStr.replaceAll("[ ]+", " ");
		textStr=textStr.replaceAll("(?m)^\\s*$(\\n|\\r\\n)", "");
		return textStr;// 返回文本字符串
	}

4、代码三:HTMLEditorKit.ParserCallback搞定,Java自带的类

package com.util;
import java.io.*;
import javax.swing.text.html.*;
import javax.swing.text.html.parser.*;
public class Html2Text extends HTMLEditorKit.ParserCallback {
	 StringBuffer s;
	 public Html2Text() {}
	 public void parse(Reader in) throws IOException {
	 s = new StringBuffer();
	 ParserDelegator delegator = new ParserDelegator();
	 // the third parameter is TRUE to ignore charset directive
	 delegator.parse(in, this, Boolean.TRUE);
	 }
	 public void handleText(char[] text, int pos) {
	 s.append(text);
	 }
	 public String getText() {
	 return s.toString();
	 }
	 public static void main (String[] args) {
	 try {
	  // the HTML to convert
		 //Reader in=new StringReader("string");	
	  FileReader in = new FileReader("java-new.html");
	  Html2Text parser = new Html2Text();
	  parser.parse(in);
	  in.close();
	  System.out.println(parser.getText());
	 }
	 catch (Exception e) {
	  e.printStackTrace();
	 }
	 }
}

以上这篇Java实现从Html文本中提取纯文本的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • SpringBoot整合EasyExcel 3.x的完整示例

    SpringBoot整合EasyExcel 3.x的完整示例

    EasyExcel 是一个基于 Java 的、快速、简洁、解决大文件内存溢出的 Excel 处理工具,它能让你在不用考虑性能、内存的等因素的情况下,快速完成 Excel 的读、写等功能,这篇文章主要介绍了SpringBoot整合EasyExcel3.x的过程,需要的朋友可以参考下
    2023-07-07
  • 解决springboot的JPA在Mysql8新增记录失败的问题

    解决springboot的JPA在Mysql8新增记录失败的问题

    这篇文章主要介绍了解决springboot的JPA在Mysql8新增记录失败的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • 详解Springboot自定义异常处理

    详解Springboot自定义异常处理

    本篇文章主要介绍了详解Springboot自定义异常处理,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • 手把手教学Win10同时安装两个版本的JDK并随时切换(JDK8和JDK11)

    手把手教学Win10同时安装两个版本的JDK并随时切换(JDK8和JDK11)

    最近在学习JDK11的一些新特性,但是日常使用基本上都是基于JDK8,因此,需要在win环境下安装多个版本的JDK,下面这篇文章主要给大家介绍了手把手教学Win10同时安装两个版本的JDK(JDK8和JDK11)并随时切换的相关资料,需要的朋友可以参考下
    2023-03-03
  • 关于Dubbo初始问题

    关于Dubbo初始问题

    这篇文章主要介绍了关于Dubbo初始问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • java读取properties文件的方法

    java读取properties文件的方法

    这篇文章主要介绍了java读取properties文件的方法,实例分析了java操作properties配置文件的相关技巧,需要的朋友可以参考下
    2015-05-05
  • 结合线程池实现apache kafka消费者组的误区及解决方法

    结合线程池实现apache kafka消费者组的误区及解决方法

    这篇文章主要介绍了结合线程池实现apache kafka消费者组的误区及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • Java经典排序算法之二分插入排序详解

    Java经典排序算法之二分插入排序详解

    这篇文章主要为大家详细介绍了Java经典排序算法之二分插入排序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • Java编程中快速排序算法的实现及相关算法优化

    Java编程中快速排序算法的实现及相关算法优化

    这篇文章主要介绍了Java编程中快速排序算法的实现及相关算法优化,快速排序算法的最差时间复杂度为(n^2),最优时间复杂度为(n\log n),存在优化的空间,需要的朋友可以参考下
    2016-05-05
  • Spring中@Lazy注解的使用示例教程

    Spring中@Lazy注解的使用示例教程

    Spring在应用程序上下文启动时去创建所有的单例bean对象, 而@Lazy注解可以延迟加载bean对象,即在使用时才去初始化,这篇文章主要介绍了Spring中@Lazy注解的使用,需要的朋友可以参考下
    2023-06-06

最新评论