java科学收录小说网站txt

327 阅读2分钟

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

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

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

            <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("下一页")) {
                //取得下一章的href
                href = element.attr("href");
                break;
            }
            if (element.text().contains("下一章")) {
                //取得下一章的href
                href = element.attr("href");
                break;
            }
            //遇到“没有了”就排除异常退出递归
            if (element.text().contains("没有了")) {
                throw new RuntimeException("没有下一章了");
            }
        }
        if (href != null) {
            writeAndGetHref(href, outFilePath);
        }
    }

}
```
```