Java爬虫

 
  
public class TianBo_Test2_More_MuLu2 implements Runnable{
 
    private static  String record_file="E:\\\\java_paChong\\\\biQuGe_XiaoShuo"; 
    private static  String record_file_zhangShu_url=""; 
    
    FileWriter fw = null;
    String url="https://www.ctgf.net";
    
      String fileName=""; //小说分类
      String fileName2="";//小说名
      String fileName_ZhangShu=""; //小说第几章
      String fileName_ZhangShu_NeiRong="";  //小说内容
      
      
        
              
      @Test
      public void jsoup( ) throws Exception {
         /** 优势:由于Document是java中自带的解析器,兼容性强
                  缺点:由于Document是一次性加载文档信息,如果文档太大,加载耗时长,不太适用**/
        //解析url地址,                                                                  笔趣阁,玄幻魔法
        Document doc___0 = Jsoup.parse(new URL(url),10000); // 解析网页 得到文档对象
//        Document doc___3 =  Jsoup.parse(new URL(url+e___2.attr("href")).openStream(), "GBK", url+e___2.attr("href"));
        
        //使用标签选择器
//        String title = document.getElementsByTag("title").first().text();
//        System.out.println("-------title------"+title);
/****************创建----首页-----目录*******************/
        /***使用 属性,属性值 -----》  获取值***/
//        <li><a href="/magic/">玄幻魔法</a></li>   -----属性,属性值
//          String title3 = document.getElementsByAttributeValue("href","/magic/").first().text();
            System.out.println("-------title3------"+title3);
//          System.out.println( "target-_blank" );
          // 根据属性名和属性值来查询DOM
         //通过选择器查找所有博客链接DOM
        Elements  targetElements=doc___0.select("#wrapper .nav a");// id选择器下的--》class选择器---》a标签
           for (Element e___0:targetElements){
               fileName=e___0.text();  // //小说分类
//               System.out.println("------------"+fileName);
               if("首页".equals(fileName)  || "榜单".equals(fileName) 
                       || "全部小说".equals(fileName)  || "搜索".equals(fileName) 
                       ||  "书架".equals(fileName) ) {
                   //跳出循环,循环下一个
                   continue;
               }
               /*创建文件夹*/  /****************创建目录*******************/   
//                   System.out.println("------2222222------"+fileName);
                File file=new File(record_file+ File.separator+ File.separator+fileName);
                if(!file.exists()){//如果文件夹不存在
                    file.mkdir();//创建文件夹
                }
        /* 给文件夹写入数据,*/    
                    
//                 System.out.println("---获取-----href--的值--:"+e.attr("href"));
//                 System.out.println("---url--:"+url+e___0.attr("href"));
                Document doc___1 = Jsoup.parse(new URL(url+e___0.attr("href")),10000); // 解析网页 得到文档对象
                 Elements  Elements_log=doc___1.select("#newscontent .l ul li .s2 a");// id选择器下的--》class选择器---》a标签    
                 for (Element e___1:Elements_log){
                     
                    
                     fileName2="";  //小说名
                     fileName2=e___1.text().toString();
//                        System.out.println("--------fileName2-----小说名-----"+fileName2);
                     System.out.println("----111----"+record_file+ File.separator + File.separator 
                                 +fileName + File.separator + File.separator
                                 +fileName2);
                          File file2=new File(record_file+ File.separator+fileName+File.separator+fileName2);    
                          if(!file2.exists()){//如果文件夹不存在
                              file2.mkdir();//创建文件夹
                              }
                         
                          Document doc___2 =  Jsoup.parse(new URL(e___1.attr("href")), 10000);
                          Elements  Elements_DiJiZhang=doc___2.select("#list dl dd a");// id选择器下的--》class选择器---》a标签    
                          for (Element e___2:Elements_DiJiZhang){
                              fileName_ZhangShu="";  //小说第几章
                              fileName_ZhangShu=e___2.text().toString().replace("?", "?");
                              record_file_zhangShu_url="";
                              record_file_zhangShu_url=(record_file + File.separator  + File.separator 
                                      +fileName+File.separator  + File.separator +fileName2
                                      +File.separator  + File.separator +fileName_ZhangShu+".txt").toString();//.replace("\\","/")
                              File file3=new File(record_file_zhangShu_url);  
                              ///如果这张内容不存在,就创建文件夹,并写入内容 ,
                              ///-------否则,就不创建跳出循环,循环下一个
                              if(!file3.exists()) {    
                                     file3.createNewFile();   
                                     
                                     
                             
                                     
                                     
                                 System.out.println("-------fileName_ZhangShu-----------"+fileName_ZhangShu);
                                     //添加--小说--张数--标题
                                      fw = new FileWriter(record_file_zhangShu_url, true);
                                      BufferedWriter buWriter = new BufferedWriter(fw);
                                      buWriter.write(fileName_ZhangShu);
                                      buWriter.newLine();//换行
                                      
                                    
                                      Document doc___3 =  Jsoup.parse(new URL(url+e___2.attr("href")), 10000);
                                      Elements  Elements_DiJiZhang_NeiRong=doc___3.select("#content");// id选择器下的--》class选择器---》a标签    
                                      for (Element e___3:Elements_DiJiZhang_NeiRong){
//                                          buWriter.write("\r\n\r\n");   //换行
//                                          buWriter.newLine();//换行
                                            fileName_ZhangShu_NeiRong=""; //小说内容
                                            //换行,一个 ‘,’换一次行
                                           fileName_ZhangShu_NeiRong= e___3.text().toString().replace("。”", "。”"+"\r\n");
//                                           fileName_ZhangShu_NeiRong= e___3.text().toString();
//                                           System.out.println("-----------fileName_ZhangShu_NeiRong------------"+fileName_ZhangShu_NeiRong);
                                           
                                          buWriter.write(fileName_ZhangShu_NeiRong);
                                         
                                      }
                                      buWriter.close();    
                                      fw.close();
                               
                                }else {  //如果这张内容存在,就跳出循环,循环下一个
                                    continue;
                                }
                          }
                          
                 }    
 
           }
 
    }
                public void run() {
                     for (int i = 0; i < 10; i++) {
                         System.out.println(Thread.currentThread().getName() + ":" + i);
                     }
                    
                }
    
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值