前言
这个程序是java选修课的作业,网上找不到合适的代码,于是自己花费了大量时间整理资料,最后实现功能,有感自己的辛苦,和人民的需求,分享一下。
类
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Scanner;
import java.util.Set;
import java.util.regex.Pattern;
程序所有引用的模块
网页爬取
public class Test6 {
// 爬取网页源代码
public void get_html(String urls) {
try {
//创建一个URL实例
URL url = new URL(urls);
try {
//通过URL的openStrean方法获取URL对象所表示的自愿字节输入流
InputStream str = url.openStream();
InputStreamReader str1 = new InputStreamReader(str,"utf-8");
//为字符输入流添加缓冲
BufferedReader br = new BufferedReader(str1);
String data = br.readLine();//读取数据
String html="";
while (data!=null){
//循环读取数据
html +=data;
data = br.readLine();
}
// System.out.println(html);
br.close();
str1.close();
str.close();
get_text(html); // 执行get_text,获得正文
} catch (IOException e) {
e.printStackTrace();
}
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
在这个函数中,我们爬取了网页的源代码,保存在html变量中,然后将html传入“get_text”函数中,经行文本提取。
注意编码格式,这里设置了编码为“utf-8”,不然会出现中文乱码。
文本提取
public void get_text(String text) throws FileNotFoundException {
String htmlStr = text; // 含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
版权声明:本文为STARSG0d原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。