java程序,保存csdn blog的文章

类别:Java 点击:0 评论:0 推荐:


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