查看: 622|回复: 8

[java] java小说爬虫

  [复制链接]
发表于 2020-8-25 22:23 | 显示全部楼层 |阅读模式
禁止求评分、诱导评分、互刷评分、互刷悬赏值,违规者封号处理。
禁止发布推广、邀请码、邀请链接、二维码或者有利益相关的任何推广行为。
所有非原创软件请发布在【精品软件区】,发帖必须按照本版块版规格式发帖。

  1. public class CartoonChapter {
  2.     public static CartoonService cartoonService;
  3.     public static CartoonCatalogue setDataSource(String cartoonCod,String chapterCod, String dataSource,CartoonService cartoonService) {
  4.         CartoonChapter.cartoonService=cartoonService;
  5.         SSLHelper.init();
  6.         if ("gufengmh8".equals(dataSource)||"36mh".equals(dataSource)) {
  7.             return gufengmh8(dataSource,cartoonCod,chapterCod);
  8.         }
  9.         return null;
  10.     }
  11.     private static CartoonCatalogue gufengmh8(String dataSource,String cartoonCod,String chapterCod) {
  12.         CartoonCatalogue cartoonCatalogue = new CartoonCatalogue();
  13.         List<String> list = new ArrayList<>();
  14.         int i = 0;
  15.         while (true) {
  16.             Document document = null;
  17.             if (i == 0) {
  18.                 document = GetDocument.getDocument("https://m."+dataSource+".com/manhua/", cartoonCod, chapterCod);
  19.             } else {
  20.                 document = GetDocument.getDocument("https://m."+dataSource+".com/manhua/", cartoonCod, chapterCod + "-" + i);
  21.             }
  22.             if (i == 0) {
  23.                 if("36mh".equals(dataSource)){
  24.                     Elements elementsByClass = document.getElementsByClass("p10 title3");
  25.                     cartoonCatalogue.setCatalogueName(elementsByClass.get(0).childNode(1).childNode(1).childNode(1).toString().replace(">",""));
  26.                 }else{
  27.                     Elements elementsByClass = document.getElementsByClass("BarTit");
  28.                     cartoonCatalogue.setCatalogueName(elementsByClass.get(0).text());
  29.                 }
  30.                 CartoonCatalogueDto cartoonCatalogue1 = cartoonService.getCartoonCatalogue(cartoonCod,dataSource);
  31.                 List<CartoonCatalogue> cartoonCatalogues = cartoonCatalogue1.getCartoonCatalogues();
  32.                 cartoonCatalogues.forEach(e -> {
  33.                     if (e.getCatalogueCode().toString().equals(chapterCod)) {
  34.                         cartoonCatalogue.setNextCode(e.getNextCode());
  35.                         cartoonCatalogue.setUpCode(e.getUpCode());
  36.                     }
  37.                 });
  38.             }

  39.             String src = getSrc(document,dataSource);
  40.             if ("https://res.xiaoqinre.com/images/default/cover.png".equals(src)||"https://img001.shmkks.com/images/default/cover.png".equals(src)) {
  41.                 break;
  42.             }

  43.             list.add(src);
  44.             i++;
  45.         }
  46.         cartoonCatalogue.setCatalogueSrc(list);
  47.         return cartoonCatalogue;
  48.     }
  49.     private static String getSrc(Document document,String data) {
  50.         Elements elementsByClass=null;
  51.         Node childNode=null;
  52.         if("36mh".equals(data)){
  53.             elementsByClass = document.getElementsByClass("UnderPage");
  54.             childNode = elementsByClass.get(0).childNode(5).childNode(1);
  55.         }else{
  56.             elementsByClass = document.getElementsByClass("chapter-content");
  57.             childNode = elementsByClass.get(0).childNode(3).childNode(0);
  58.         }
  59.         String src = null;
  60.         List<Node> nodes = childNode.childNodes();
  61.         for (Node node : nodes) {
  62.             if (!"".equals(node.toString().trim())) {
  63.                 src = node.attr("src");
  64.             }
  65.         }
  66.         return src;
  67.     }
  68. }
复制代码

  1. public class BookChapter {[/font][/color]
  2.     public static BookCatalogueDto setDataSource(String dataSource, String bookCod, String chapterCod) {
  3.         SSLHelper.init();
  4.         if ("biquge5200".equals(dataSource)) {
  5.             return biquge5200(bookCod, chapterCod);
  6.         } else if ("biquge".equals(dataSource)) {
  7.             return biquge(bookCod, chapterCod);
  8.         }
  9.         return null;
  10.     }

  11.     private static BookCatalogueDto biquge5200(String bookCod, String chapterCod) {
  12.         BookCatalogueDto bookCatalogueDto = new BookCatalogueDto();
  13.         Document document = null;
  14.         try {
  15.             document = Jsoup.connect("https://www.biquge5200.com/" + bookCod + "/" + chapterCod + ".html").get();
  16.         } catch (IOException e) {
  17.             e.printStackTrace();
  18.         }
  19.         //<a >下一章</a>
  20.         //获得的章节名称
  21.         Elements chapterName = document.select("h1");
  22.         bookCatalogueDto.setCatalogueName(chapterName.text());
  23.         String p = document.select("#content").html();
  24.         Elements elementsByClass = document.getElementsByClass("bottem1");
  25.         //获取下一章
  26.         String node = elementsByClass.get(0).childNode(9).toString();
  27.         Pattern pattern = Pattern.compile("<a\\s*href="?([\\w\\W]*?)"?[\\s]*?[^>]>([\\s\\S]*?)(?=</a>)");
  28.         Matcher matcher = pattern.matcher(node);
  29.         if (matcher.find()) {
  30.             String nameCodeUrl = matcher.group(1);
  31.             if(!("https://www.biquge5200.com/"+bookCod+"/").equals(nameCodeUrl)) {
  32.                 String insStr = nameCodeUrl.substring(nameCodeUrl.lastIndexOf("/") + 1, nameCodeUrl.lastIndexOf("."));
  33.                 bookCatalogueDto.setNextCode(Integer.parseInt(insStr));
  34.             }
  35.         }
  36.         //获取上一章
  37.         String node1 = elementsByClass.get(0).childNode(5).toString();
  38.         Matcher matcher1 = pattern.matcher(node1);
  39.         if (matcher1.find()) {
  40.             String nameCodeUrl = matcher1.group(1);
  41.             if(!("https://www.biquge5200.com/"+bookCod+"/").equals(nameCodeUrl)){
  42.                 String insStr = nameCodeUrl.substring(nameCodeUrl.lastIndexOf("/") + 1, nameCodeUrl.lastIndexOf("."));
  43.                 bookCatalogueDto.setUpCode(Integer.parseInt(insStr));
  44.             }
  45.         }
  46.         String str = p.replace("<div id='content' style='width: 85%;'>", "")
  47.                 .replace("/n", "")
  48.                 .replace("</div>", "")
  49.                 .replace("<p>", "<p data-type="2"><span class="content-wrap">")
  50.                 .replace("</p>","</span></p>");
  51.         bookCatalogueDto.setCatalogueText(str);
  52.         bookCatalogueDto.setCatalogueCod(Integer.parseInt(chapterCod));
  53.         bookCatalogueDto.setBookCod(bookCod);

  54.         return bookCatalogueDto;
  55.     }

  56.     private static BookCatalogueDto biquge(String bookCod, String chapterCod) {
  57.         BookCatalogueDto bookCatalogue = new BookCatalogueDto();
  58.         Document document = null;
  59.         try {
  60.             document = Jsoup.connect("https://www.biquge.com/" + bookCod + "/" + chapterCod + ".html").get();
  61.         } catch (Exception e) {
  62.             e.printStackTrace();
  63.         }
  64.         String p = document.select("#content").html();
  65.         bookCatalogue.setCatalogueText(p);
  66.         bookCatalogue.setCatalogueCod(Integer.parseInt(chapterCod));
  67.         Elements chapterName = document.select("h1");
  68.         bookCatalogue.setCatalogueName(chapterName.text());
  69.         Elements next = document.getElementsByClass("next");
  70.         String nextHtml = next.get(0).html();
  71.         Pattern pattern = Pattern.compile("<a\\s*href="?([\\w\\W]*?)"?[\\s]*?[^>]>([\\s\\S]*?)(?=</a>)");
  72.         Matcher matcher = pattern.matcher(nextHtml);
  73.         if (matcher.find()) {
  74.             String nameCodeUrl = matcher.group(1);
  75.             String insStr = nameCodeUrl.substring(nameCodeUrl.lastIndexOf("/") + 1, nameCodeUrl.lastIndexOf("."));
  76.             bookCatalogue.setNextCode(Integer.parseInt(insStr));
  77.         }
  78.         return bookCatalogue;
  79.     }


  80. }
复制代码


11.jpg 22.jpg 33.png 44.jpg
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2020-8-25 22:23 | 显示全部楼层
谢谢大佬
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2020-8-25 22:24 | 显示全部楼层
好的,非常感谢
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2020-8-25 22:38 | 显示全部楼层
谢谢分享
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2020-8-25 23:15 | 显示全部楼层
感谢楼主分享
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2020-8-26 08:14 | 显示全部楼层
6666666666
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2020-8-26 08:15 | 显示全部楼层
厉害了大牛
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2020-8-26 09:40 | 显示全部楼层
谢谢大牛
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2020-8-26 10:22 | 显示全部楼层
6666
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

关注公众号

相关侵权、举报、投诉及建议等,请发 E-mail:admin@discuz.vip

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖
关注公众号
返回顶部