分类

七喜软件园->杂类工具->小说漫画阅读器电脑版下载 v1.0 笔趣阁定制版
小说漫画阅读器电脑版下载 v1.0 笔趣阁定制版

小说漫画阅读器电脑版下载 v1.0 笔趣阁定制版

大小:87.6M更新日期:2020/9/10

类别:杂类工具下载量:48149

246
31
反馈投诉
下载到手机 注:本软件为电脑软件,不适用于手机用户安装。

    小说漫画阅读器电脑版是一款十分好用的在线小说漫画阅读工具,用户可以在这里轻松体验全网最简单的阅读方式,在电脑上一站式免费阅读,让小说或者漫画东欧能轻松畅读。小说漫画阅读器里面的小说资源都是源自笔趣阁,用户可以在这里免费阅读全网海量的热门小说,你想看的小说都能在这里轻松阅读,不用花钱也能无限畅读。

    小说漫画阅读器电脑版

    小说漫画阅读器绿色版有着简单的使用方式,用户在搜索栏中一键搜索,全网海量的资源都在这里,每天都能发现更多的精彩。

    小说漫画阅读器电脑版特色

    在线小说资源阅读

    离线下载功能

    搜索框

    多数据源筛选

    小说漫画阅读器电脑版使用说明

    用爬虫写的小说漫画网站(多线程,已上线)

    jar包版:https://wws.lanzous.com/ilcdzght3yj 密码:4vmx

    只是想用的直接拿jar包吧java -jar SanMuYuanBook-1.0-SNAPSHOT.jar 运行就行,然后在浏览器localhost:80访问

    项目放在了码云上,需要请自行下载(随便霍霍)https://gitee.com/sen_yang/SanMuYuanBook

    1.首先是java目录,

    com\aaa\config\SSLHelper.java这个是用来忽略网站安全证书的,不加他的话,就没次都需要下载要爬取的网站的安全证书,很麻烦,所以就干脆全部忽略。

    com\aaa\config\ThreadExecutorConfig.java用来配置线程池

    com\aaa\controller\BookController.java关于小说的各种操作

    com\aaa\controller\CartoonController.java关于漫画的各种操作

    com\aaa\data这个包获取数据的操作,项目核心都在这

    com\aaa\util\DataProcessing.java用来数据处理,里面只有个分割list的方法

    com\aaa\util\Download.java用来调用浏览器下载

    com\aaa\util\GetDocument.java传入网址获取document对象

    com\aaa\util\ZipUtils.java用来将漫画打包为zip

    2.然后是前端

    index是小说主界面

    cartoonIndex是漫画主界面

    Catalogue结尾的是目录界面

    read开头的是阅读界面

    代码都在项目里面自己看吧

    小说漫画阅读器电脑版使用方法

    解压后打开exe文件,到浏览器输入http://localhost/,即可开始阅读,数据源有两个biquge和biquge5200,页面借用了起点。

    我电脑上运行时所有页面加载速度平均为3s,网速好不到一秒,很多地方用到了线程池,不过只用了定长的线程池

    项目已经部署在腾讯云服务器,http://49.235.253.131,部署在云上的加载速度慢,这个也是没办法的

    小说漫画阅读器电脑版代码展示

    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 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 biquge5200(String bookCod) {

    try {

    Map<Integer,List> bookCatalogueDtoMaps = new HashMap<>(3);

    Pattern pattern = Pattern.compile("]>([\\s\\S]*?)(?=)");

    Document document = Jsoup.connect("https://www.biquge5200.com/" + bookCod + "/").get();

    Elements dd = document.getElementsByTag("dd");

    Map<Integer, List> 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 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 get(List dd, String bookCod, Document document, Pattern pattern) {

    List 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 biquge(String bookCod) {

    try {

    Pattern pattern = Pattern.compile("]>([\\s\\S]*?)(?=)");

    Document document = Jsoup.connect("https://www.biquge.com/" + bookCod + "/").get();

    Map<Integer,List> bookCatalogueDtoMaps = new HashMap<>(3);

    Elements dd = document.getElementsByTag("dd");

    Map<Integer, List> 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 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;

    }

    }

    精品推荐

    相关下载

    热门标签
    软件排行榜
    最新更新
    网友评论
    我要跟贴
    • 四川自贡电信 网友 甜甜的少女心

      感谢分享,正在寻找这个.

    • 广西玉林电信 网友 这样就好

      好东西,马上试试效果!

    • 黑龙江哈尔滨电信 网友 谎友

      还没用,看看

    • 广西柳州联通 网友 别来无恙

      超级喜欢这款软件,谢谢

    • 安徽淮北移动 网友 素颜白裙亦倾城

      感谢小编分享!

    +
    0