Greasy Fork is available in English.

小说下载器

一个可扩展的通用型小说下载器。目前支持起点、晋江、SF轻小说、刺猬猫等小说网站的免费章节,以及亿软小说、精彩小说网、书趣阁、顶点小说、2k小说阅读网、和图书、笔趣窝、星空文学、手打吧等转载网站。详细支持网站列表请打开说明页面。

Autor
bgme
Denne inštalácií
41
Celkový počet inštalácií
564
Hodnotenie
8 0 1
Verzia
2.0.6.4
Vytvorené
Akutalizované
Licencia
AGPL-3.0-or-later
Spustiť na

小说下载器

本脚本是一个可扩展的通用型小说下载器,适用于大多数小说网站。

使用方法

如果本脚本支持该小说网站,当打开小说目录页时,网页右上角会出现下载图标,点击该图标即可开始下载。

当下载完成后,会自动下载一个txt文档及zip压缩包。

如果你要下载的小说章节较多,等待时间可能较长,此时请耐心等待。

你也可以按下F12,打开网页控制台查看当前下载状态。

demo

目前支持小说网站

添加更多网站

你可以通过添加抓取规则以添加更多小说网站,即向 rules Map 中添加新的条目。

抓取规则示例:

["www.yruan.com", {
    bookname() { return document.querySelector('#info > h1:nth-child(1)').innerText.trim() },
    author() { return document.querySelector('#info > p:nth-child(2)').innerText.replace(/作\s+者:/, '').trim() },
    intro() { return convertDomNode(document.querySelector('#intro > p'))[0] },
    linkList() { return document.querySelectorAll('div.box_con div#list dl dd a') },
    coverUrl() { return document.querySelector('#fmimg > img').src; },
    chapterName: function(doc) { return doc.querySelector('.bookname > h1:nth-child(1)').innerText.trim() },
    content: function(doc) { return doc.querySelector('#content') },
}],

抓取规则的 key 为该抓取规则适用的网站域名,即 document.location.host

抓取规则的 value 一对象,该对象由7个函数1个变量组成:

函数名功能返回值
bookname()抓取小说题名String
author()抓取小说作者String
intro()抓取小说简介String
linkList()抓取小说分章链接列表NodeList
coverUrl()抓取小说封面图片地址String

以上5个函数在小说目录页(即按下按钮时的页面)运行。

函数名功能返回值
chapterName(doc)抓取小说章节名String
content(doc)抓取小说章节主体部分Element

以上2个函数在小说章节页运行,输入值 doc 为小说章节页的 document

变量名功能备注
charset网站响应的编码方式可选
CORS抓取章节时是否跨域可选
maxRetryTimes最大重试次数(默认为3)可选
maxConcurrency下载文本时最大并发数(默认为10)可选
maxImgConcurrency下载图片时最大并发数(默认为5)可选

若网站返回的响应非 UTF-8 编码,请添加 charset 变量注明编码方式。网站当前编码方式可通过 document.charset 查看。

对于起点这样抓取章节页需要跨域的网站,请将 CORS 设为 true

根据上述要求添加好相应网站抓取规则,并在 // @match 中添加相应网站,即可在新网站上使用本下载器。

调试功能

enableDebug 变量改为 true 可开启调试功能,开启之后可在控制台(console)中访问如下对象:

对象名类型功能
rule变量当前网站抓取规则
main(rule)函数运行下载器
convertDomNode(node)函数输出处理后的txt文本及Dom节点
ruleTest(rule)函数测试抓取规则
gfetch(url,option)函数使用 GM_xmlhttpRequest 进行请求

License

AGPL-3.0-or-later