CSDN 的blog经常出问题, 大家可能都领教过了
过年了,可能几天不能来上网了
就想把csdn blog自己的文章备份一下
于是就写了这个程序,用java写的
大家可以看看, 代码如下:
/** 使用的时候,需要修改strurl为自己的blog地址
程序会在当前目录下保存文件
具体,可以根据自己的需要适当修改
慈勤强编写 */
import java.io.*;
import java.net.*;
class csdn { public static void main(String[] args) throws Exception { String strUrl; String ss; int icount=0;
//处理月份开始,连接首页,分析月份 StringBuffer sbMonth=new StringBuffer("");
strUrl="http://blog.csdn.net/cqq/";
URL url = new URL(strUrl);
URLConnection conn = url.openConnection();
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream(),"UTF8"));
System.out.println("连接成功。");
int i=0; int j=0;
while ((ss=rd.readLine())!=null) {
if(ss.indexOf("年")>0&&ss.indexOf("id")>0&&ss.indexOf("SingleColumn")>0) { i=ss.indexOf("archive"); if(i>0) { j=ss.indexOf(".aspx",i); if(j>0) { sbMonth.append(strUrl+"/"+ss.substring(i,j)+".aspx"); sbMonth.append(","); } } } } rd.close(); System.out.println("分析月份列表成功"); //处理月份结束,得到一个包含每月URL地址的sbMonth字符串
//处理每月,分析每月文章列表 StringBuffer sbArticle=new StringBuffer(""); String[] str=sbMonth.toString().split(",");
for(int i_m=0;i_m<str.length;i_m++) { strUrl=str[i_m]; url = new URL(strUrl); conn = url.openConnection(); rd = new BufferedReader(new InputStreamReader(conn.getInputStream(),"UTF8")); boolean bPrint=false;
while ((ss=rd.readLine())!=null) { if(ss.indexOf("postTitle")>0) { bPrint=true; } if(ss.indexOf("postText")>0) { bPrint=false; } if(bPrint) { i=ss.indexOf("http"); if(i>0) { j=ss.indexOf(".aspx",i); if(j>0) { sbArticle.append(ss.substring(i,j)+".aspx"); sbArticle.append(","); } } } } } System.out.println("获取所有文章的URL地址列表成功"); //获取每月文章列表结束,得到所有文章的URL地址
//获取每篇文章内容开始 System.out.println("\r\n保存文章开始..."); String[] str1=sbArticle.toString().split(","); for(int i_n=0;i_n<str1.length;i_n++) { icount++; strUrl=str1[i_n]; StringBuffer sb=new StringBuffer(""); System.out.println(strUrl); url = new URL(strUrl); conn = url.openConnection(); rd = new BufferedReader(new InputStreamReader(conn.getInputStream(),"UTF8")); boolean bPrint1=false; boolean bPrint2=false;
RandomAccessFile rf=new RandomAccessFile("csdn_cqq_"+icount+".htm","rw");
boolean bb=true; while ((ss=rd.readLine())!=null&&bb) {
if(ss.indexOf("postTitle")>0) { bPrint1=true; } if(ss.indexOf("postfoot")>0) { bPrint1=false; } if(bPrint1) { sb.append(ss); } } byte [] b; b=sb.toString().getBytes(); rf.write(b); rf.close(); } System.out.println("完成,总共保存 "+icount+" 篇文章"); } }

|