java程序,保存csdn 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="#";

  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+" 篇文章");
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值