git clone
https://github.com/a316523235/getbook.git
功能
该项目主要是用于采集在线小说,按章节将小说下载为.txt文件
实现功能
1、由于采集的网站为每个访问者配置了不同的key。故首次运行时抓取key,并将key保存在本地配置文件中,以便下次使用。
2、搜索小说,名称匹配时直接开始按目录章节下载小说。 匹配时列出相似小说。
3、本地保存已下载小说,下次搜索同名小说时,可直接获取小说目录地址,并跳过已存在的章节。
config.json说明
1、domain: 网站的地址 (请勿修改)
2、searchId: 网站所需的key (首次运行时自动获取)(请勿修改)
3、searchUrl: 网站的小说搜索页面 (请勿修改)
4、isUseCache: 搜索小说时是判断本地已有的小说,true仅更新新章节, false全部从新下载 (可修改)
5、nextMinite: 抓取每章节内容的时间间隔,单位(秒) (防止被屏蔽)(可修改,建议大于10)
6、isInit: 配置信息是否已经初始化,主要用于判断是获已取到key (修改为false时,下次运行会重新获取key)
待实现功能
1、一次指下载多本小说
2、整本小说下载完后,将所有.txt文件打包为rar文件
顺便问问,node.js有什么好用的rar打包模块
另外申请下加精华, 虽然代码不是高深。 不过有考虑到比较多的细节, 我觉得很合适新的学习用。
zip-folder
3Q 我去看下
我现在的下载机制是 第一章完成后timeout 10秒后去下载第二章。
我在想这样会不会更好:一开始就把下载所有章节的事件安排后,不管完成只启动下载某章节的任务,后续异步操作,每间隔10秒启动一个章节事件。
@a316523235 为何不是先爬所有下载任务,然后异步下载。。。。
这个小说搜索是在哪个网站搜的
是先爬所有下载任务的, 我是先访问了小说目录页面,获取了所有章节地址再开始的。 不过在分配下载任务方面思路不是很清晰
在config.json里面有写
更新: 1、app.js中的串行事件,改为通过aysnc控制执行
提示:之前方法比较别扭,改下免得带坏新手
@a316523235 child_process可乎。。。
按章节…反人类啊…
应该是可选章节范围吧.
@reverland 是用child process做每章的下载吗,每章都做个子线程会不会太多了
我爬过笑话 就不用每次点下一章 下一章了。
@ystyle 额 这个建议不错。 我觉得可以两个可选参数 启始章节、章节数量
@longFeiLi 我是之前有本小说只在那个网站上有更新,就想弄一个。 后面还有打算做更新提醒
@longFeiLi 笑话这个挺不错的。 笑话都很短,点下一章很麻烦
@CarlosRen 不好意思没注意点回复,直接放在了楼下。
@oero 不好意思没注意点回复,直接放在了楼下。
@a316523235 是指压缩。。。
@reverland 明白了, 想法很好。 压缩的时候开个子线程确实比较好。
8个空格缩进。。。lz显示器一定很大。。。
@reverland 其实我是用tab缩进的(4空格),在编辑器下也是这样。 在github上不知道为什么就显示为8空格
没看明白支持爬哪些小说网站?
难道都支持?
@FrankFan 没那么强的。目前只支持一个网站。 不同的网站要做不同的处理
2015-12-19 00:54更新内容: 1、小说名称由命令输入,改为启动前写在robotBook.txt中,并支持多本小说串行(即一本完成才进入下一本)下载 2、章节下载时记录错误次数,超过3章出错则跳过该小说,下载下一本小说。
2015-12-21 23:18更新内容: 更新为可选章节范围(即添加可选范围,见14楼意见)
2016-01-08 12:00 更新内容: 添加超时判断 (谢谢论坛内的朋友提供的技术帮助)
围观。。