作为初学nodejs的小学森, 不玩一把爬虫真的都不好意思说自己学过nodejs
所以, 本次教程本着严谨的教学角度, 向大家传授一下严谨的老司机绝技
学完之后, 自己写点儿小程序, 爬一爬某些不可描述的小图片啊, 小电影啊什么的, 也是可以的
所以我要在这里再次重申一下啊, 这真的是一篇严谨的教学博客
一入*门深似海, 从此节操是路人
准备工作
看到这篇博客时, 默认您已经掌握了nodejs的基本知识以及模块化的相关理念, 以及npm包管理的简单使用方法(也就一个cmd命令, npm i),所以基本上是看一遍之后就可以非常简单的上手的.
本次的数据库是直接使用的mongoDB, 简单上手,值得拥有.
mongoDB的配置
这个下载就不用说了吧, 老司机都知道上度娘.
关键是配置这块, 安装好之后,我们在项目的文件夹下创建一个db文件夹, 当然,项目文件夹是要存储你待会儿写的代码用的,新建一个就好
下好之后, 可以启动cmd(win + r, 然后回车) 输入mongo
输完了吗? 是不是没有看到结果?
没有结果就对了,因为我没教你配置环境变量啊
配置环境变量
首先,进入安装目录的bin文件夹,比如我是直接在安装的时候全部点的下一步,所以我的安装目录在C:\Program Files\MongoDB\Server\3.2\bin
, 找到这个地方之后,在地址栏, 将这个文件路径复制下来,粘贴到环境变量的对应地方
环境变量的位置在: 我的电脑右键> 属性 > 高级系统设置 > 环境变量 > 管理员的用户变量
注意不要动系统变量,不然一旦操作不慎是会造成系统宕机的.
我们在用户变量的PATH中,鼠标光标点到最后,在它后面插上一个小分号
哎, 怎么有了一种邪恶的感觉
咳咳~ 插进去之后, 将我们之前bin目录的文件路径复制上去,然后确定
现在我们要做一下简单的配置让mongoDB启动起来:
mongod --storageEngine mmapv1 --dbpath "d:\mongodb\db" --logpath "d:\mongodb\log\MongoDB.log
下面详细讲一下配置的参数:
mongod
mongoDB的命令,这个不用说
--storageEngine mmapv1
这是一个比较老的mongoDB的存储引擎, 32位系统的童鞋需要有这条命令, 64位系统的可以不用,
--dbpath "d:\mongodb\db"
数据库路径,找到项目文件夹, 把自己的项目文件夹的db路径替换掉上面的路径
--logpath "d:\mongodb\log\MongoDB.log
日志路径,一般我们会放在和db一起, 也是一样的, 把自己的log文件夹的路径替换掉上面的路径,因为刚开始是没有MongoDB.log这个文件的,所以需要新建一个.
执行成功之后,如果没有看到ERROR的提示, 那么恭喜你,mongo的服务已经成功启动了, 报错的可以再往上翻一下是不是有步骤遗漏, 因为我也是纯手工码字, 难免可能自己也有遗漏的地方, 确实不懂的地方也可以度娘或google
以上,mongo的配置就搞定了,mongo服务默认跑在27017端口, 如果不需要长期使用, 保持cmd挂起服务就正常运行的, 记住不能关掉哦
如果需要长期使用mongo服务的, 可以将mongo服务设置为系统服务,开机即启动, 可以在cmd中执行以下代码, 用于创建mongo服务进程
mongod --storageEngine mmapv1 --dbpath "d:\mongodb\db" --logpath "d:\mongodb\log\MongoDB.log" --install --serviceName "MongoDB"
这个是mongo的指令,所以要在cmd状态下,不要在mongo的交互状态下执行这个命令,否则会报错的
完成以上指令, 就已经成功创建了系统服务了, 我们现在来启动它, 在cmd中输入:
NET START MongoDB
提示服务器启动成功, bongo~
安装依赖
进入项目文件夹, 在cmd中输入npm init
创建一个json文件, 然后使用npm i *
一次安装express, cheerio, mongoose, superagent这几个依赖, 所以需要将指令中的*
改为以上的依赖名称
万事俱备只欠东风了, 我们新建一个app.js文件, 并引入刚刚安装的依赖
1 | var express = require('express') |
下面来大概说明一下这几个模块的作用
express: 一个极简快速灵活的web开发框架, 用来快速搭建web服务器的
cheerio: nodejs中的jQuery
superagent 用来做客户端请求代理的, 直接点儿说就是代我们上网站拉网页代码的
mongoose: 用来连接mongoDB和处理mongo的请求
好了解完之后,我们要正式开始写代码了
首先一步,还是连接mongo数据库, 不然我们趴下来的数据就没地儿存了
1 | // 连接到mongoDB数据库,端口是27017, 我们将内容存储在cnodejs这个数据库中 |
然后,我们再实例一个express, 方便我们进行操作
1 | var app = express() |
使用代码来进行抓取
1 | app.get('/', function(req, res, next){ |
最后一步, 指定服务器的监听端口
1 | app.listen(8090, function(err) { |
全部搞定,我们使用cmd输入命令 node app 或者使用webstorm的ctrl + f9启动一下
到浏览器中,输入刚刚设置的本地服务器加端口号: localhost:8090
回来一看,我靠,好多的保存成功啊
至此,我们的爬取工作就已经全部完成了, 看下成果呗:
在mongoDB中查看自己的爬取结果
如果不想麻烦的话, 可以直接安装一个ROBO 3T, 傻瓜式操作
也可以自己输入指令查看
在cmd中输入mongo, 进入mongo的交互
输入指令: use cnodejs
转到我们的cnodejs这个数据库中
然后输入指令: ‘db.list.find().pretty()’ 爬取的结果就都出来了
结束
爬取的过程至此圆满结束
当然, 作为一个负责任的老司机, 怎么可能会不告诉你, 爬取出来的小电影小图片怎么看呢.
很简单, 使用ejs或者handlebars这类的模板引擎, 将数据库的内容渲染出来就好了