随手小说下载使用说明
受hoothin的怠惰小说下载器启发,开始编写本脚本。
特点
- 图形界面,可以直观看到要下载的目录列表,排序,删除等;
- 目录项不一定要有关键字(如第一章等),会自动查找包含最多链接的目录列表;
- 自动获取目录列表有误时,可手动点击目录项,自己指定正确的目录列表;
- 可自定义网站配置,配置信息可以保存以备下次使用。
适用性
本脚本可下载任意网站的小说或其他正文。但一般只适合下载那些非动态加载的网站。否则需要自定义网站规则,不保证一定能成功。一般收费网站,会有较多障碍。
有任何问题、建议,欢迎在评论区提出。我有空的话会及时修复、改进。
基本使用方法
打开待下载文章的目录页,点击本脚本的“开始”菜单项,会在页面右侧显示一个面板,下方有当前页面链接列表,直接点“下载全文”即可下载,文件会下载到浏览器当前的默认下载文件夹下,浏览器有下载管理器的可以在里面查看。
在下载全文前,你可以对章节列表进行排序、删除、重新获取、抽样查看某个章节的正文等。待感觉顺序和正文都正常后再下载全文。这样可以保证下载内容尽量正确。
面板上方是当前网站的配置信息,默认会把自动生成的链接列表和提取正文的css选择器显示在上面。小白一般不用管。
碰到本脚本不能正常生成准确的链接列表或提取正文的网站,如果你有一定的前端开发经验,你也可以自定义网站配置,以使网站能正常下载。详见网站配置信息说明。
面板操作简介:
会把当前页面中符合目录选择器的链接新增在列表下方。如果配置的目录选择器为空,会自动生成目录选择器。
根据目录页面的下一页链接,连续获取接下去的剩余目录列表。当获取结束还没有获取到完整目录时(往往是连续获取网站网络出现问题),可以再点击它以继续获取。
如果获取剩余目录失败,只能试试通过其他插件(如东方永页机等),看看是否能行。
全部删除已经提取的目录列表。
根据目录顺序,依次下载章节全文,生成文本文件并自动下载。如果有章节全文提取失败,则不会自动下载。
保存时会上传小说相关信息到云端,具体信息为网页标题、网址、章节数、正文长度、时间5个字段,没有任何个人信息。想着以后能不能做个通过本脚本下载的排行榜什么的。如果不希望上传相关信息,可以在配置中设置notUploadSaveinfo即可。
删除正文提取为空的目录,只保留有正文的目录,包括部分提取的。
会下载本章节网页并根据当前正文选择器提取正文。如果配置的正文选择器为空,会自动生成正文选择器。
根据提取结果会在后面显示状态,正常为OK,下载失败为Er,正文提取失败为No等。会根据正文页面的下一页链接继续下载,直到链接和目录中的链接相同。如果不为OK但有部分正文,会在结果后面显示“+”号。后面的数字代表续页数量。
如果正文不为空会显示一个正文阅读器供浏览检查。正文阅读器中可以设置显示样式,并可以翻页。可以当做一个简单的小说阅读器用。
删除本章节
可以根据章节提取顺序,章节号,链接号升降序排序。
章节号根据标题中最先出现的阿拉伯数字或中文数字提取,链接号提取的是最后出现的阿拉伯数字。
隐藏或显示目录列表。
显示当前网站的配置信息,目录和正文都会依据这些配置信息来提取。
输入框左边有下列按钮:
把输入框中的配置作为当前网站的配置信息存储起来,下次重新在该网站下使用本脚本时会自动使用已保存的配置信息。当配置信息为空时,会删除本网站的配置信息。
把输入框放大或缩小到固定的大小。
把json格式的一个或多个网站配置信息文件导入并保存到脚本。
导出目前已保存的所有网站的配置信息。保存的是json格式,文件名AllSiteSetting.txt。方便自己换电脑时还原及用户间共享。
删除现有全部网站配置信息。
*自助获取目录列表
针对自动获取目录列表失败的情况,可以手动点击任意目录项,获取正确的目录列表。
网站配置信息说明:
配置信息内部以json格式存放。默认不会自动保存,需要时请手动保存。在显示框显示的是本脚本规定的格式,规则如下:
开始字符以$$打头的,则后面字符认为是key,接下去的行则为这个key所对应的值。空行自动删除。
允许的key值:
表示链接列表选择器,多行则每一行表示一个选择器,提取时会依次合并。
当每页的目录选择器都不一样时,可以设置该值为 --,使获取剩余目录时都自动获取目录选择器。
表示正文选择器,多行会依次提取并合并正文。
当每章节的正文选择器都不一样时,可以设置该值为 --,使获取每章节正文时都自动获取正文选择器。
干扰码选择器,提取正文前会检索符合的元素,多行会依次删除
目录下一页选择器
目录下一页延迟时间,毫秒
针对动态网页,利用iframe加载获取正文。单独一行,不需要设置值。只是这种方式获取文本会比较慢。个别网站会跳到章节页面,不能用。
自定义下一页链接的文本正则表达式。
不要上传正文保存信息。单独一行,不需要设置值。
以下的key为自定义函数,统一的行为是如果函数没有返回值,则默认会返回并更新传入的各个参数。
自定义列表函数。会在列表提取前执行,参数为doc,selector。表示目录页的document和目录选择器。如果返回参数,则应该是一个对象数组表示目录列表,每个对象为{href:xxx;text:xxx}表示一个目录项的网址和目录名。
自定义目录链接处理函数,会在处理每一个目录链接前执行。传入doc,item,表示目录页的document和待处理的某个目录链接元素。
正文处理函数,会在每一个目录的正文处理前执行。传入doc,selector,表示正文页的document和正文选择器。如果返回值为单个文本,则直接把该文本当做正文。
自定义获取正文下一页链接。传入doc,href,表示当前正文页的document和网址。函数应返回下一页网址。
配置信息举例
如果获取不到章节文本或者不全,首先试试配置$$frameText,只是下载会慢一些。
如果有部分章节获取不到文本或者不全,试试$$textSelector下加--。让每一个章节都自动获取正文,互不干扰。
每章节的元素id、class等都不同,加上以下配置可以正常获取章节全文:
$$textSelector
--
章节内容动态生成,所以需要用frame获取。自动获取的文本选择器有额外内容,最好自己定义:
$$frameText
$$textSelector
#content
章节内容动态生成,所以需要用frame获取:
$$frameText
*99藏书网
网站应切换到m.99csw.com手机版,抓取的内容比较干净。网页源码带混乱,需用frame方式获取。
$$textSelector
#content
$$frameText
鸣谢
天下文章一大抄,菜鸟编程也类似。我不是专业前端开发人员,许多js编程技巧来自网上。从hoothin的“怠惰小说下载器”我借鉴了正文提取方法。另外,为支持中文数字章节号提取,从网上抄了“红烧鱼i”的《js实现中文数字转阿拉伯数字》,为支持js高亮显示,使用了codemirror库,在此一并表示感谢。