自己动手写CSDN博客提取器源码分析之一:处理网页保存为txt文件

转载自:http://blog.csdn.net/w397090770/article/details/7767531

 

在昨天上午发了一个帖子[原创]自己动手写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里面保存的,所以在处理图片的时候就简单的用正则表达式去掉了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值