欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2023-12-18 17:06:28
1、应用场景:从一份html文件中或从string(是html内容)中提取纯文本,去掉网页标签; 2、代码一:replaceall搞定 //从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文本中提取纯文本的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

上一篇:

下一篇: