凤凰山笔记

《武动乾坤》小说下载器(java版)

分享一段我抓小说用的代码~用这个可以在D盘里面直接创建一个名字叫“武动乾坤.txt”的文件,当然这个是《武动乾坤》所有章节的最新全本哦,O(∩_∩)O~

原理:通过java或者其他语言分析网页结构,把内容抓取下来写入文件,方式很像网络爬虫。我之前搞过一个小说采集站:咔噔全本小说,就是利用的这种方法。后来种种原因长时间未更新了,其实主要原因就是懒,不过此站小说全部免费下载,算个公益站吧。


import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import quanben_com.util.IOUtil;

/**

  • 书名:武动乾坤
  • 采集地址:http://www.pfwx.com/wudongqiankun/
  • @author www.kaedeen.com
    /
    public class GetSingleBook {

    private final static int RETRY_TIME = 100;

    /**

    • @param args
      */
      public static void main(String[] args) {
      // TODO Auto-generated method stub
      String url=”http://www.pfwx.com/wudongqiankun/“;
      String path=”D:/“;
      Document doc = getDocument(url);

      //获得采集章节list
      List chapterList=new ArrayList();

      Elements es = doc.select(“.zhangjiekaishi a”);

      if(!es.isEmpty())
      {

      for(Element e : es)
      {
          String href= e.attr("href");
          chapterList.add(href);
      }
      

      }

      //根地址
      String rootUrl = url.substring(0, url.lastIndexOf(“/“));

      System.out.println(“开始采集 …….”);

      if(null!=chapterList&&chapterList.size()>0)
      {

      for(int i=0;i]+>", "rn").replaceAll("", "").replace(" ", " ")
          .replaceAll("★★", "").replaceAll("如果觉得", "").replaceAll("好看,请把本站网址推荐给您的朋友吧! ", "");
      

      content= title+”rn”+content;

      return content;
      }

      /**

    • jsoup通用获取网页内容,支持多次断开重连,重连次数可自定义
    • @param url
    • @return
      */
      public static Document getDocument(String url)
      {
      int time = 0;

      do{

      try {
      
          Document doc1 = Jsoup.connect(url)  
                  .userAgent("Mozilla/5.0 (Windows; U; Windows NT 5.2) Gecko/2008070208 Firefox/3.0.1 ")  
                  .timeout(24*60*60*1000).get();
      
          return doc1;
      
      } catch (IOException e) {            
          time++;
          if(time < RETRY_TIME){
              System.out.println("请求超时,进行第"+time+"次重连……");
              try {
                  Thread.sleep(3000);
              } catch (InterruptedException e1) {
                  continue;
              }
          }
      
      }
      

      }while(time < RETRY_TIME);

      return null;

      }

}


说明:代码仅供参考,项目所需jar包
commons-codec-1.3.jar
commons-logging.jar
jsoup-1.6.3.jar
log4j-1.2.14.jar

如果您是伸手党,可以留言给我,我可以帮您弄成exe版本的,但是暂时仅限武动乾坤这本书吧~最近工作较忙哈。其他问题请留言,enjoy~

 

cloudroc wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!
很惭愧,只做了些微小的工作,您的支持将鼓励我继续努力创作!