Node.js爬虫 抓取简书并生成自己的博客
2018-03-21 本文已影响0人
皮卡乒乓
1、前言
认识我的同学可能知道我有自己的博客,可由于只会前台导致自己的博客都是用纯静态页面写的,导致工作量很大,而我在坚持了两个月后决定放弃了。好在会点node,但是写个后台管理吧对我来说不现实,费时间,所以我在想能不能将我简书所有的文章移植到博客上,用简书做我的后台管理。经过一周左右的尝试,完美解决。
2、码前尝试
很多人都知道,可以一键打包下载自己的简书文章,但对于代码实现来说,却并不简单,所以我瞄定了用爬虫来实现。
TIM截图20180320134144.png
3、过程原理
- 1、数据实现:每小时去根据我的简书地址爬取,如果我的简书内容有新添加的内容,则将这篇文章的标题,分类,时间,字数,内容入库,如果有内容变化,则更新当前数据,如果没变化,则不管。
- 2、后台服务实现:用node写接口调用我爬取的数据,有按标题搜索,按分类搜索等等。
- 3、前台实现:用vue+bootstrap实现页面
4、过程
- 1、爬取数据
这里用到的node库有crawler和node-schedule,crawler用来爬数据,node-schedule用来做定时任务,每小时的0分0秒去抓取数据
在爬取之前我想到两种方式,1是根据ajax分析数据,2是直接爬取页面,分析页面。当然第一种最简单,二话不说,直接network分析一波,于是
network.png
结果是这样的
network2.png
这还有什么可说的,就直接爬呗。。。
我们可以根据每一个li,找打具体的每一个页面,然后爬到每一个页面的值,我为了方便不用写样式,但又不需要无用的数据入库,则只将note标签的数据入库,后面的广告和底部推荐则不管
book.png
样式的话通过我的尝试发现简书只用到了两个css文件,那当然,我就顺带着爬走了。
- 2、入库
我选用的mysql作为我的数据库,简单方便。
mysql.png
3、接口
其实我会的node并不是很多,这只是一些简单的查询功能,当然我都支持跨域访问了。
根据标题关键字搜索
根据分类关键字搜索
查询博客分类
查询博客标题
4、前台调用
在MVVM大行其道的当今,当然是选择用它了,没错就是VUE了,由于没有美工,我就不要脸的自己当美工了,那当然是用bootstrap了,成型后大致是这样的
blog.png