在昨天上午发了一个帖子[原创]自己动手写CSDN博客提取器,提取文件保存支持PDF、doc、txt三种格式有很多网友比较感兴趣,有些网友说要公布一下源码,在这里,我就把这个软件制作的一些核心代码贴出来,给大家分享。
下面是把抓取到的网页用正则表达式处理留下纯文本然后保存为txt文件。这个代码很简单的,相信大家都看得懂吧。
/**
*
*/
package com.wyp.html2txt;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
/**
* @author w397090770
* Create Data: 2012-7-18
* Email: wyphao.2007@163.com
*
* 版权所有,翻版不究,但是在修改本程序的时候务必加上这些注释。谢谢
* 仅用于学习交流之用,
*/
public class saveAsTXT {
public void html2txt(File file, String str, String title){
//去掉<script>(.*?)</script>
//str = str.replaceAll("<[Ss][Cc][Rr][Ii][Pp][Tt].*?>.*?<[/]?[Ss][Cc][Rr][Ii][Pp][Tt]>", "####");
//str = str.replaceAll("<\\b(\\w+)[\\s\\w>\"/\'=:;.]+</\\1>", "####");
str = str.replaceAll("<\\b(\\w+)[\\s\\w>\"/'=&:_;.]+</\\1>", "####");
//去掉<br/>
str = str.replaceAll("<[\\s]*[Bb][Rr][\\s]*[/]?[\\s]*>", System.getProperty("line.separator"));
//<p>也是换行
str = str.replaceAll("<[\\s]*[/]*[Pp].*?>", System.getProperty("line.separator"));
//替换所以的HTML标签
str = str.replaceAll("<[\\s]*[/]?[a-zA-Z]*.*?>", "");
//替换空格,两个 说明是一个大空格,一个 说明是一个小的空格
str = str.replaceAll(" ", " ");
str = str.replaceAll(" ", " ");
//替换> <号
str = str.replaceAll(">", ">");
str = str.replaceAll("<", "<");
//替换&
str = str.replaceAll("&", "&");
//半方大的空白
str = str.replaceAll(" ", " ");
//全方大的空白
str = str.replaceAll(" ", " ");
//双引号
str = str.replaceAll(""", "\"");
//版权
str = str.replaceAll("©", "");
//已注册商标
str = str.replaceAll("©", "");
//乘号
str = str.replaceAll("×", "×");
//除号
str = str.replaceAll("÷", "÷");
//加号
str = str.replaceAll("+", "+");
//不知道为什么CSDN格字是被替换掉了,不管了,我也替换
str = str.replaceAll("格", "格");
//保存文件
File saveFileName = new File(file.getAbsolutePath() + File.separator + title + ".txt");
if(!saveFileName.exists()){ //只有文件不存在才保存
try {
saveFileName.createNewFile();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
return;
}
BufferedWriter bw = null;
try { //开始保存了
bw = new BufferedWriter(new FileWriter(saveFileName.getAbsolutePath(), false));
bw.write(str);
bw.newLine();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
bw.flush();
bw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
以上是把抓取到的网页用正则表达式匹配,去掉所有的网页标签,只留下纯文本的数据,然后就可以保存为txt文件,当然图片是无法在txt里面保存的,所以在处理图片的时候就简单的用正则表达式去掉了。