软件 | 三木猿阅读(电脑小说漫画阅读器) v1.0 绿色版 |
内容 |
三木猿阅读(电脑小说漫画阅读器)小说阅读器软件,三木猿阅读器适配PC平台,可以在电脑上免费浏览全网小说资源,支持分类搜索,支持智能书签,支持离线下载。并且无需注册会员,让您轻松体验PC端看小说的乐趣。 三木猿阅读器功能在线小说资源阅读 离线下载功能 搜索框 多数据源筛选 三木猿阅读器使用解压后打开exe文件,到浏览器输入http://localhost/,即可开始阅读,数据源有两个biquge和biquge5200,页面借用了起点。 部分代码一览package com.aaa.data; import com.aaa.config.SSLHelper; import com.aaa.dto.BookCatalogueDto; import com.aaa.entity.BookCatalogue; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.nodes.Node; import org.jsoup.select.Elements; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.*; import java.util.regex.Matcher; import java.util.regex.Pattern; import static com.aaa.util.DataProcessing.splitList; /** * [url=home.php?mod=space&uid=686208]@AuThor[/url] 杨森 * [url=home.php?mod=space&uid=1248337]@version[/url] 1.0 * @Title: BookCatalogue * [url=home.php?mod=space&uid=686237]@date[/url] 2020/8/7 15:39 */ public class BookCatalogueDB { private static ExecutorService executorService; public static List<BookCatalogueDto> setDataSource(String dataSource, String bookCod,ExecutorService executorService) { BookCatalogueDB.executorService =executorService; SSLHelper.init(); if ("biquge5200".equals(dataSource)) { return biquge5200(bookCod); } else if ("biquge".equals(dataSource)) { return biquge(bookCod); } return null; } private static List<BookCatalogueDto> biquge5200(String bookCod) { try { Map<Integer,List<BookCatalogueDto>> bookCatalogueDtoMaps = new HashMap<>(3); Pattern pattern = Pattern.compile("<a\\s*href=\"?([\\w\\W]*?)\"?[\\s]*?[^>]>([\\s\\S]*?)(?=</a>)"); Document document = Jsoup.connect("https://www.biquge5200.com/" + bookCod + "/").get(); Elements dd = document.getElementsByTag("dd"); Map<Integer, List<Element>> integerListMap = splitList(dd, 3); CountDownLatch latch=new CountDownLatch(3); for (int i = 0; i < 3; i++) { final int ins=i; executorService.execute(() -> { bookCatalogueDtoMaps.put(ins,get(integerListMap.get(ins), bookCod, document, pattern)); latch.countDown(); }); } latch.await(); List<BookCatalogueDto> bookCatalogueDtos=new ArrayList<>(dd.size()); for (int i = 0; i < 3; i++) { bookCatalogueDtos.addAll(bookCatalogueDtoMaps.get(i)); } return bookCatalogueDtos; } catch (IOException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); }finally { executorService.shutdown(); } return null; } public static List<BookCatalogueDto> get(List<Element> dd, String bookCod, Document document, Pattern pattern) { List<BookCatalogueDto> bookCatalogueDtos = new ArrayList<>(dd.size()); Element imgurl = document.getElementById("fmimg"); Element intro = document.getElementById("intro"); Element info = document.getElementById("info"); Element child = info.child(1); String h1 = info.select("h1").text(); for (int i = 0; i < dd.size(); i++) { Element element = dd.get(i); BookCatalogueDto bookCatalogueDto = new BookCatalogueDto(); BookCatalogue bookCatalogue = new BookCatalogue(); Node node = element.childNode(0); for (Node e : element.childNodes()) { if (!"".equals(e.toString())) { node = e; } } bookCatalogueDto.setCatalogueName(node.childNode(0).toString()); String s1 = node.toString(); Matcher matcher = pattern.matcher(s1); if (matcher.find()) { String nameCodeUrl = matcher.group(1); String insStr = nameCodeUrl.substring(nameCodeUrl.lastIndexOf("/") + 1, nameCodeUrl.lastIndexOf(".")); bookCatalogueDto.setCatalogueCod(Integer.parseInt(insStr)); } bookCatalogueDto.setBookName(h1); bookCatalogueDto.setBookIntro(intro.text()); for(Node n :imgurl.childNodes()){ if(n.toString().matches("(.*)img(.*)")){ bookCatalogueDto.setBookImage(imgurl.childNode(0).toString()); } } bookCatalogueDto.setBookCod(bookCod); bookCatalogueDto.setBookAuthor(child.text().replace("作 者:","")); bookCatalogueDtos.add(bookCatalogueDto); if (i + 1 < dd.size()) { Node node1 = dd.get(i + 1).childNode(0); Matcher matcher1 = pattern.matcher(node1.toString()); if (matcher1.find()) { String nameCodeUrl = matcher.group(1); String insStr = nameCodeUrl.substring(nameCodeUrl.lastIndexOf("/") + 1, nameCodeUrl.lastIndexOf(".")); bookCatalogue.setNextCode(Integer.parseInt(insStr)); } } } return bookCatalogueDtos; } private static List<BookCatalogueDto> biquge(String bookCod) { try { Pattern pattern = Pattern.compile("<a\\s*href=\"?([\\w\\W]*?)\"?[\\s]*?[^>]>([\\s\\S]*?)(?=</a>)"); Document document = Jsoup.connect("https://www.biquge.com/" + bookCod + "/").get(); Map<Integer,List<BookCatalogueDto>> bookCatalogueDtoMaps = new HashMap<>(3); Elements dd = document.getElementsByTag("dd"); Map<Integer, List<Element>> integerListMap = splitList(dd, 3); CountDownLatch latch=new CountDownLatch(3); for (int i = 0; i <3; i++) { final int ins=i; executorService.execute(()->{ bookCatalogueDtoMaps.put(ins,get(integerListMap.get(ins), bookCod, document, pattern)) ; latch.countDown(); }); } latch.await(); List<BookCatalogueDto> bookCatalogueDtos=new ArrayList<>(dd.size()); for (int i = 0; i < 3; i++) { bookCatalogueDtos.addAll(bookCatalogueDtoMaps.get(i)); } return bookCatalogueDtos; } catch (Exception e) { e.printStackTrace(); }finally { executorService.shutdown(); } return null; } } |
标签 | 小说漫画,阅读器,三木猿 |
缩略图 | ![]() |
软件名称 | 三木猿阅读(电脑小说漫画阅读器) v1.0 绿色版 |
软件图标 | |
软件大小 | 35.6MB |
发布时间 | |
软件平台 | |
软件语言 | 简体中文 |
软件授权 | 免费软件 |
操作系统 | Windows平台 |
系统类型 | |
用户评分 | 4 |
软件版本 | |
官方网站 | |
官方网址 | |
软件截图 | |
软件总类 | 电脑游戏 |
软件大类 | 软件下载-应用软件-浏览阅读-电脑小说漫画阅读器下载 |
软件小类 | 浏览阅读 |
开发者 | |
主办单位名称 | |
ICP备案名 | |
备案号 | |
使用年龄 | |
下载链接 | ![]() |
攻略教程 | |
详细介绍 | |
操控设备 | |
隐私政策 | |
查看权限 | |
敏感权限获取说明 | |
软件类型 | 国产软件 |
安全警示 | 适度休息有益身心健康,请勿长期沉迷于使用电脑或刷手机。 |
随便看 |
|
传承兰台文化,共同保存历史记忆!兰台网收藏软件、游戏、图片、图书、电影、电视剧等互联网档案,是免费和可借阅文本、电影、音乐等档案的数字图书馆。