有个老兄写过,我修改了一下,希望对你有帮助。
package csdn;/**
 使用的时候,需要修改strurl为自己的blog地址 程序会在当前目录下保存文件 具体,可以根据自己的需要适当修改 慈勤强编写
 
 修改:可惜只能保存首页上的15篇文章.
 
 */import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.RandomAccessFile;
import java.net.URL;
import java.net.URLConnection;
import java.util.HashSet;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/srx/"; 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) {
i = ss.indexOf("archive");
while (i > 0) {
j = ss.indexOf(".aspx", i);
if (j > 0) {
System.out.println(ss.substring(i, j));
sbMonth.append(strUrl + "/" + ss.substring(i, j) + ".aspx");
sbMonth.append(",");
}
i = ss.indexOf("archive", i + 1);
}
}
rd.close();
System.out.println("分析月份列表成功");
// 处理月份结束,得到一个包含每月URL地址的sbMonth字符串 // 处理每月,分析每月文章列表
StringBuffer sbArticle = new StringBuffer(""); // 去掉重复数据
String[] str = sbMonth.toString().split(",");
HashSet hs0 = new HashSet();
for (int i_n = 0; i_n < str.length; i_n++) {
hs0.add(str[i_n]);
}
Object[] strNoDup = hs0.toArray(); for (int i_m = 0; i_m < strNoDup.length; i_m++) {
strUrl = (String) strNoDup[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(","); // 去掉重复数据
HashSet hs = new HashSet();
for (int i_n = 0; i_n < str1.length; i_n++) {
hs.add(str1[i_n]);
} Object[] newarr = hs.toArray(); for (int i_n = 0; i_n < newarr.length; i_n++) {
icount++;
strUrl = (String) newarr[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; System.out.println("csdn_srx_" + icount + ".htm");
RandomAccessFile rf = new RandomAccessFile("csdn_srx_" + 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 + " 篇文章");
}
}
转载啊,不是原创。呵呵