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文本中提取纯文本的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。