java科学收录小说网站txt

ops/2024/10/21 18:08:38/

        疫情那一年,老爸被风控措施困在了家中,无所事事的他,在微信上的广告上,开始接触网络爽文小说,一部叫《女神的上门豪婿》,一部叫《都市极品神医》。

        随着阅读的深入,老爸逐渐沉迷于追更。后来在他的微信上看到付款记录,半年时间前前后后差不多付款将近两千。虽说可以为知识付费,但是为这没营养的口水文付费这么多,确实有点冤大头的意思,然后我就在网上帮他下载免费的txt。差不多持续了两三年,然而最近发现免费的txt下载基本找不到了,无赖只能花点时间写个小程序,科学收录成txt。

        此处以女神的上门豪婿-韦小鸨-采墨阁小说在线阅读,这篇小说为例,用Jsoup工具读取网页内容。

 <dependency><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>1.10.2</version></dependency>
package com.gm.springboot;import org.jsoup.Jsoup;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.net.URL;/*** 小说下载:http://www.caimoge8.net/* 女神的上门豪婿*/
public class JsoupDemo {public static void main(String[] args) throws IOException {String outFilePath = "/Users/longjun/Desktop/data/xiaoshuo.txt";if (!new File(outFilePath).exists())new File(outFilePath).createNewFile();String href = "/read/54285/71401277.html";writeAndGetHref(href, outFilePath);}public static void writeAndGetHref(String href, String outFilePath) throws IOException {//正则方法//随便打开一个章节URL url = new URL("http://www.caimoge8.net" + href);//获取标题内容String title = Jsoup.parse(url, 100000).select(".bookname").text();//获取正文内容String text = Jsoup.parse(url, 100000).select("#booktxt").text();text = text.replace("本章未完,点击下一页继续阅读。", "");//去掉这一行文字try (FileWriter fw = new FileWriter(outFilePath, true); // 第二个参数为true代表追加模式BufferedWriter bw = new BufferedWriter(fw)) {if (title.contains("(1/2)")) {//一个章节的第一段写入标题+正文title = title.substring(0, title.indexOf("("));bw.write(title);bw.write("\n\n");bw.write(text);} else {//一个章节的第二段写入正文bw.write(text);bw.write("\n\n\n\n");}} catch (IOException e) {e.printStackTrace();}//获取全部A标签元素Elements a = Jsoup.parse(url, 100000).getElementsByTag("a");for (Element element : a) {if (element.text().contains("下一页")) {//取得下一章的hrefhref = element.attr("href");break;}if (element.text().contains("下一章")) {//取得下一章的hrefhref = element.attr("href");break;}//遇到“没有了”就排除异常退出递归if (element.text().contains("没有了")) {throw new RuntimeException("没有下一章了");}}if (href != null) {writeAndGetHref(href, outFilePath);}}}


http://www.ppmy.cn/ops/127338.html

相关文章

闯关leetcode——145. Binary Tree Postorder Traversal

大纲 题目地址内容 解题代码地址 题目 地址 https://leetcode.com/problems/binary-tree-postorder-traversal/description/ 内容 Given the root of a binary tree, return the postorder traversal of its nodes’ values. Example 1: Input: root [1,null,2,3] Output…

context.getExternalFilesDir()与返回的路径对照 Android 存储路径

从Android 10开始&#xff0c;对于数据访问权限要求的越来越严&#xff0c;app对于私有目录的使用越来越多&#xff0c;进而对context.getExternalFilesDir()的使用也多了&#xff0c;下面是对应传不同参获取的返回路径&#xff1a; getExternalCacheDir(); 路径为&#xff…

Chrome DevTools 三: Performance 性能面板扩展—— 性能优化

Performance 性能 &#xff08;一&#xff09;性能指标 首次内容绘制 (First Contentful Paint&#xff0c;FCP)&#xff1a; 任意内容在页面上完成渲染的时间 最大内容绘制 (Largest Contentful Paint&#xff0c;LCP)&#xff1a; 最大内容在页面上完成渲染的时间 第一字节…

模型训练提速

在网络模型训练时&#xff0c;提速是一个重要的考量因素&#xff0c;特别是在使用PyTorch训练ResNet这样的复杂模型时。以下是一些具体的提速方式&#xff1a; 一、优化数据加载与处理 使用DataLoader&#xff1a; torch.utils.data.DataLoader可以方便地加载数据&#xff0c;…

Vue3中ref和reactive的对比

1. ref 定义 用途: 用于创建基本数据类型或单一值的响应式引用。语法: const myRef ref(initialValue); 特性 返回一个包含 .value 属性的 Proxy 对象。适用于基本数据类型&#xff08;如数字、字符串、布尔值等&#xff09;和单一值。 import { ref } from vue;const co…

Python-函数self详解

在Python中&#xff0c;self 是一个特殊的关键字&#xff0c;主要用于类&#xff08;class&#xff09;的定义中&#xff0c;表示类的实例&#xff08;instance&#xff09;本身。以下是对 self 的详细解释&#xff1a; 类和实例的概念&#xff1a; 类&#xff08;Class&#…

进一步开发在线课程管理系统的功能,包括学生查看课程、提交作业、查看成绩等。

1. 学生查看课程功能 学生需要一个页面来查看他们已经注册的课程列表。我们可以在数据库中创建一个关联表 enrollments&#xff0c;用于记录学生注册的课程。 a. 修改数据库设计 新增一张 enrollments 表&#xff0c;来存储学生注册的课程信息&#xff1a; CREATE TABLE en…

群晖使用Docker搭建NASTool自动化观影工具并实现在线远程管理

文章目录 前言1. 本地搭建Nastool2. nastool基础设置3. 群晖NAS安装内网穿透工具4. 配置公网地址5. 配置固定公网地址 前言 本文主要分享一下如何在群晖NAS中本地部署Nastool&#xff0c;并结合cpolar内网穿透工具&#xff0c;轻松实现公网环境远程管理与访问本地NAS中储存的影…