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+" 篇文章");
}
}
本文地址:http://com.8s8s.com/it/it11461.htm