吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3900|回复: 17
收起左侧

[Java 原创] 使用Java爬取小说网站的小说

  [复制链接]
无缺i 发表于 2021-12-30 12:41

示例网址:http://www.qibookw.com/book/7/7132/

网页分析

  • 通过审查元素发现所有的章节目录都在元素ID为:chapterlist的<ul>标签下面

image-20211230123429400

  • 此时我们需要获取<li>标签是数量,然后循环遍历获取到每一章的的URL链接
  • 打开获取到的URL链接发现每章的内容都是在IDnovel_contentdiv下面

​     image-20211230123606759

  • 此时我们只需要获取到这个ID下面的text值就能获取到文章的内容

代码实现

依赖

<dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.7.15</version>
        </dependency>
        <dependency>
            <!-- jsoup HTML parser library @ https://jsoup.org/ -->
            <groupId>org.jsoup</groupId>
            <artifactId>jsoup</artifactId>
            <version>1.14.3</version>
        </dependency>

Java代码

/**
 * @AuThor 无缺
 * @ClassName test01
 * @date 2021/12/30 9:57
 * @Description TODO
 */
public class test01 {

    public static void main(String[] args) {
        //向这个篇小说所在的主页发送请求,并获取到HTML文档
        String body = HttpRequest.get("http://www.qibookw.com/book/7/7132/").execute().body();
        //使用jsoup解析得到的html
        Document  parse = Jsoup.parse(body);
        //使用select查询出所有的li标签
        Elements li = parse.select("#chapterlist > li");
        //根据li的数量循环遍历
        for (int i = 1; i < li.size(); i++) {
            //根据遍历的i值获取href标签中的url
            String href = parse.select("#chapterlist > li:nth-child(" + i + ") > a").attr("href");
            StaticLog.info("{}",href);
            //获取每章的标题
            String title = parse.select("#chapterlist > li:nth-child(" + i + ") > a").text();
            //拼接URL
            String url = "http://www.qibookw.com" + href;
            StaticLog.info("url:{}",url);
            //根据得到的URL发送get请求
            String body1 = HttpRequest.get(url).execute().body();
            //解析请求得到的HTML
            Document parse1 = Jsoup.parse(body1);
            //获取文章正文
            String content = parse1.select("#novel_content").text();
            StaticLog.info("当前爬取的文章标题是:{},内容是:{}",title,content);
            //构建文章保存的路径
            FileWriter fileWriter = new FileWriter("E:\\文档\\xs\\" + title + ".txt");
            //写入文章的内容
            fileWriter.write(content);
        }
    }

}

免费评分

参与人数 7吾爱币 +12 热心值 +7 收起 理由
qq001203 + 1 + 1 我很赞同!
xiaoxiaohei1315 + 1 + 1 我很赞同!
lcxxhp + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
Aguilera + 1 + 1 我很赞同!
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
bingehack + 1 我很赞同!
zyh666 + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 无缺i 发表于 2022-11-21 10:51
aojiancandao 发表于 2022-11-12 13:26
实验了一下,title包含特殊符号创建文件失败,IORuntimeException: IOException: 文件名、目录名或卷标语法 ...

如果包含有空格的话,可能就会出现这个问题
msy123 发表于 2023-3-15 16:45
怎么说呢,写的还可以,我也写了一个类似的,但是现在小说源都被垄断了,盗版小说源都是错别字,看的特别闹心,以前还可以,现在不行了,下载下来也没法看。
yj1009 发表于 2022-10-17 09:43
jzx111 发表于 2022-11-8 17:18
终于看到一个用java写的了
aojiancandao 发表于 2022-11-12 13:26
实验了一下,title包含特殊符号创建文件失败,IORuntimeException: IOException: 文件名、目录名或卷标语法不正确。 title需要处理一下。
 楼主| 无缺i 发表于 2022-11-21 10:50
wwccz 发表于 2022-11-19 09:40
爬取成功,什么网站都可以爬吗

这里只是提供一个思路
aojiancandao 发表于 2022-11-21 22:21
无缺i 发表于 2022-11-21 10:51
如果包含有空格的话,可能就会出现这个问题

我测试的时候是遇到包含 ?符号 ,测试的就是楼主发的这个小说链接
6400108 发表于 2022-11-21 22:49
学习学习学习
sangkou 发表于 2022-11-30 11:33
原来如此
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 01:21

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表