软件园学生在线

  • {{ item.name }}
  • 2023试用期

登录与注册

【后端二】闫飞

  • 闫飞
  • 2022-10-21
  • 0

小说爬虫学习经历

我有充分的证据表明,培训与作业不是一个网址是故意的

一 关于URL

培训时作为演示的笔趣阁网站 和 作业要求的爱下书小说网的URL设置不同,

如果要获取每一章的URL,则需要用爱下书总站的URL加上爬取的信息(反正爬取的就是这个网站上的小说,定义一个总站的网址也无所谓吧)

String menu1 = "https://www.aixiaxsw.com";
String subLink = a.attr("href");
fileOut.write(("\n" + "[" + chapterName + "]" + "(" + menu1 + subLink + ")").getBytes());

二 关于目录与作者

打开网页源代码,发现作者名是用\

包裹的

直接使用jsoup爬取

 String writer = document.selectFirst("p").text();

目录在之前已经爬取过,我选择将其加上换行符在正文之前先输出一遍

 int count = 1;
                for (Element a : as) {
                    count++;
                    if (count > 10) {
                        String chapterName = a.text();
                        String subLink = a.attr("href");
                        fileOut.write(("\n" + "[" + chapterName + "]" + "(" + menu1 + subLink + ")").getBytes());

三 关于最新章节

爱下书小说网有九章最新章节,放在正文的最前面,我们可以用一个if判断来跳过它们。(感谢许子璇学长提供的思路)

 int i = 1;
 for (Element a : as) {
 i++;
 if (i > 10) {
     执行后面的语句爬取小说内容

四 关于换行

通过搜索引擎,我得知whitelist类可以用于换行,但在导入时一直爆红。在咨询朱哲甬学长后(赞美总监),改用safelist实现(这两个类在使用方法上似乎没有任何不同,whitelist改名好像与西方zzzq有关)

 String baseContent = Jsoup.clean(chapterContent.toString(), "", Safelist.none(), new Document.OutputSettings().prettyPrint(false));
                        String newText = baseContent.replaceAll("\\s{2,}", "\n");
                        String trueContent = newText.replaceFirst("\n", "").trim();

代码太长,一行放不开,将就看吧

五 关于Markdown超链接

按照Markdown语法在输出语句中添加符号实现标题与超链接

我为小说名添加了一级标题,为章节名添加了三级标题,为目录添加了超链接。(发给zxgg的版本忘记给标题加#号了,在这里说明一下)

fileOut.write(("\n" + "[" + chapterName + "]" + "(" + menu1 + subLink + ")").getBytes());
fileOut.write(("# "+title + "            " + "\n\n").getBytes());
fileOut.write(("\n" + "[" + chapterName + "]" + "(" + menu1 + subLink + ")").getBytes());

六 关于jar包

按照教程操作即可

闫飞
闫飞
© 2025 软件园学生在线
Theme by Wing