java网络爬虫 -2024/12/20

借用maven项目,引入jsuop爬虫坐标

<dependency>
            <groupId>org.jsoup</groupId>
            <artifactId>jsoup</artifactId>
            <version>1.10.2</version>
        </dependency>

爬取网络小说代码

package com.stdu;

import org.jsoup.Connection;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
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;

public class NovelJsoup {

    public static void booktest() throws IOException, InterruptedException {
        // 选择要下载小说的地址
        String url = "https://www.bg90.cc/book/188352/";
        // 获取首页的html内容
        Connection connect = Jsoup.connect(url);
        // 这里的header里的参数是为了伪装成浏览器,对于某些有防爬虫的网站必须伪装成浏览器才能进行爬取,这里的参数可以当做常量来使用
        Document document = connect.header("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36").get();
        // 书名
        String FileName = document.select("h1").first().text().replaceAll(" 夜无疆  ", "");
        Elements dd = document.select("dd a");
        for (Element element : dd) {
            // 获取每章的超链接
            String url_block = "https://www.bg90.cc" + element.attr("href");
            // 章节名
            String text = element.text().replaceAll("\\?", "");
            System.out.println(text);
            // 获取每章html内容
            Document document1 = Jsoup.connect(url_block).get();
            // 获取每章文本内容,去除正文中 :全本小说网 www.qb5.ch,
            String content = document1.getElementById("chaptercontent").text().replaceAll("  请收藏本站:https://www.bg90.cc。笔趣阁手机版:https://m.bg90.cc ", "").replaceAll("    ", "\n").replaceAll("。", "。\n");
            content = content.replaceAll("『点此报错』『加入书签』", "");
            // 创建文件夹
            System.out.println(FileName);
            System.out.println(content);
            File folder = new File(FileName);
            // 判断是否存在这个文件夹,没有就创建
            if (!folder.exists()) folder.mkdirs();
            // 完整文件路径
            File file = new File(folder, text + ".txt");
            // 创建一个File对象,表示要写入的txt文件
            BufferedWriter writer = new BufferedWriter(new FileWriter(file));
            writer.write(content);
            writer.flush();
            writer.close();
            // 做个好人等5秒弄一次
            Thread.sleep(3000);
        }
    }

    public static void main(String[] args) throws IOException, InterruptedException {
        booktest();
    }
}

posted @   XYu1230  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示