Timotaoshu
提莫淘书,小说爬虫,用node爬书,node 小说,vue+express+node爬虫
Install / Use
/learn @IceInTheFire/TimotaoshuREADME
案例网址:
pc后台管理页面:http://8.129.226.110:9092
账号:火炎 密码:123456
登录进去后,在权限管理里的职员管理,给自己新增一个账号,不然账号很容易被顶掉。
h5移动端页面:http://8.129.226.110:1111/
初衷:
1、作为一名多年的网路小说爱好者和网站开发人员,怎么能忍受别人网站里的广告?还特么的是一些乱七八糟的广告。
2、因为手痒,用node做后台接口,搭建web服务器,用node做爬虫,主要是因为兴趣,所以想玩玩。
服务器:
linux系统、nginx、mysql、redis、pm2、privoxy配合shadowsocks搭建的http代理(防止服务器ip被封,所以用了另一个代理ip)
注:mysql数据库设置,
数据库字符集设置建议:utf8mb4 -- UTF-8 Unicode
数据库排序规则设置建议:utf8mb4_general_ci
数据库表类型设置:InnoDB
技术栈:
node主要用到的库:
redis、mysql、express、compression(支持gzip压缩)、
morgan(中间件记录日志,在本项目的作用相当于服务器访问日志)、
jwt-simple(redis里存储用户加密信息,获取用户信息的时候需要解密)、
crypto(使用sha1再次加密用户加密信息得到用户token。)、
scheduleObj(定时任务)、
request、request-promise、cheerio(爬来的页面,用$去获取自己想要的数据,相当于jquery库)、
multer(文件上传)、node-xlsx(解析xls文件的插件)
......
前端用到的框架:
iview-admin脚手架(vue2)
h5主要用到的技术栈:
node、pug、less、gulp
......
注:为了避免版本错误,node_modules建议用yarn来下载
思路:
先去其他渠道的网站爬取我想要的小说,先爬取到我的服务器上。后台管理页面就是专门操作这些的。
移动端网页只是显示小说(最适合移动端uc浏览器,目前还没有开始怎么做)。
已实现需求:
1、代理ip的爬取、使用、导出、导入;
2、小说来源渠道可配置化;
3、设置一个稳定的http代理;(可以不用设置,现在的免费代理ip已经很可靠了)(在linux服务器里实现,是privoxy搭配shadowsocks在服务器里设置了一个稳定了http代理,不在该代码里,若想了解学习,请戳我)
4、服务器日志下载;
5、根据来源渠道的配置,爬小说,更新小说;
6、定时任务;
1、每天凌晨1点和中午13点定时任务(爬取代理ip,然后去重,然后再检查)
2、每两个小时一次的定时任务
* 1、未爬取的开始爬小说
* 2、开始爬取错误章节列表里的章节
* 间隔5分钟
* 3、检查代理ip是否可用,若不可用则删除
* 4、再一次爬取错误章节列表里的章节
3、每日凌晨3点自动更新日志
7、后台管理手动更改小说描述;
8、后台管理添加作者模块;
9、待续...
已解决bug:
1、防止sql注入;
2、request使用代理ip后,因timeout失效导致爬书无力的bug;
3、queue队列里的任务还未结束就出列了。当爬取小说数据过多时,直接导致服务器崩溃。(服务器:一核处理器、一G内存。在提莫淘书1.0.0版本的时候,爬取三四百本书的时候,可重现服务器崩溃。提莫淘书2.0.0版本已经修复)
4、mysql数据库章节内容单表数据太多,导致mysql经常崩,也因当初设置mysql数据库时,没想到那么多。
未完需求:
1、日周月年榜榜单,根据访问量来确定;
2、完整的h5页面;
3、h5的api文档开放;
4、后台管理添加 在爬来的小说章节里插入章节;
5、待续...
跑项目之前
拉取项目代码前
请确保电脑上node版本是8.12.0以上 最好是8.12.0版本的(因为线上就是这个版本的node)
请确保电脑上支持yarn
请确保电脑上有mysql和redis
1、开始跑项目的第一步(项目内所有的node_modules)
下载公共的node_modules包
cd timotaoshu
yarn install
下载adminApi的node_modules包
cd timotaoshu/adminApi
yarn install
下载iview-admin的node_modules包
cd timotaoshu/iview-admin
yarn install
下载h5的node_modules包
cd timotaoshu/h5
yarn install
1、或者可以直接shell一键下载
install.sh
2、检查端口号
确保电脑上8080、3000、1111、9092、8000这五个端口没有被使用或禁用
3、导入数据库
在mysql里,新建一个名为timotaoshu的数据库(字符集:utf8mb4 -- UTF-8 Unicode;
排序规则:utf8mb4_general_ci)
然后在timotaoshu里运行sql文件夹内的timotaoshu.sql文件
温馨提示:
数据库里的user表里的
账号是冰中焱,密码是123456。
账号是火炎,密码是123456。(mysql里存的用户密码是加密文)
注:mysql数据库设置,
数据库字符集设置建议:utf8mb4 -- UTF-8 Unicode
数据库排序规则设置建议:utf8mb4_general_ci
数据库表类型设置:InnoDB
4、更改mysql和redis的config文件
在目录的config文件夹
里面有mysql的连接配置和redis的连接配置
5、跑项目(开发模式)
cd timotaoshu/adminApi
npm run dev
另开一个命令窗口
cd timotaoshu/iview-admin
npm run dev
另开一个命令窗口
cd timotaoshu/h5
npm run dev
访问 localhost:8080
访问 localhost:1111
操作,建议先爬30个以上的ip代理数量后,再爬书,不然没有足够的代理ip,则会导致不能爬书
6、部署项目
cd timotaoshu/adminApi/bin
pm2 start www
另开一个窗口(部署pc后台管理的前端项目前,请先npm run build生成vue静态文件)
cd timotaoshu/iview-admin/
npm run build
生成后
// cd timotaoshu/iview-admin/server
cd server
pm2 start server
另开一个窗口
cd timotaoshu/h5/bin
pm2 start h5
访问 localhost:9092
访问 localhost:1111
操作:
pc端后台管理
账号:冰中焱 密码:123456
账号:火炎 密码:123456
建议先爬30个以上的ip代理数量后,再爬书,不然没有足够的代理ip,则会导致不能爬书。(使用代理ip爬书的目的是防止服务器ip被封。一般想防爬的网站都会有防爬机制的,一旦某发现个ip在某个时间段访问特别频繁,他们则会把那个ip列入黑名单。)
7、项目结构介绍
正在撰写中...
8、加入我们
1、现实过于骨感,项目过于庞大,个人力量过于弱小,所以,我们需要志同道合的人一起努力、切磋、交流。
努力改造提莫淘书,切磋交流前端、node、安卓、IOS、服务器等互联网技术。
2、这里代码我上传了,个人觉得这个代码对于那些想学node的人来说,是一个很好的学习机会,
代码拉下来后,兴许会遇到很多开发、部署、服务器等问题,欢迎加入我们,共同参讨学习。
QQ群号:831613487 申请时注明:github提莫淘书
9、免责声明
本开源项目仅属学习使用,严禁用于商业。
Related Skills
node-connect
344.1kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
96.8kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
344.1kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
344.1kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
