基于Node.js的爬虫项目
实现的最终结果:通过爬取https://www.cnblogs.com/
里面的文章获取对应作者的相关信息。
目的:学习node搭建服务器、分析网页请求并模拟请求、熟悉http协议相关、node写入文件等功能
项目文件结构说明
index.js
:项目的启动(入口)文件server.js
:主文件package.json
:模块依赖文件及相关配置
搭建node服务器
默认开始本步骤前已经安装好node环境
server.js:
引入node内置的http模块:
1 |
|
创建一个简单的node服务器:
1 |
|
测试服务器是否搭建成功:在命令行进入相应的目录文件,使用node server.js
命令启动服务器,然后浏览器打开127.0.0.1:3000
访问,网页出现hello world
即表示服务器创建成功。
使用到的模块
node内置模块
http
:用来搭建服务器fs
: 文件系统,用来写入和读取文件url
:针对url处理
使用方法:代码中使用require()
直接引入。
第三方模块
eventproxy
:控制并发async
:控制并发请求的数量(防止被封号)superagent
:实现客户端请求代理(类似封装的ajax请求)cheerio
:针对html片段实现jquery功能操作
使用方法:先安装到项目中,然后在代码中使用require()
引入。
安装方法:
先通过npm init
来生成package.json
文件。
然后通过npm 安装依赖模块的方法来安装对应的模块:
1 |
|
下面列出相关模块使用学习参考链接:
使用
eventproxy
控制并发。参考理解使用
async
控制并发请求数量防止被封IP。参考理解使用
superagent
实现客户端请求代理模块。参考理解使用
cheerio
实现将请求回来的html片段实现可以类似jquery使用的功能。参考理解
思考: eventproxy
、async
和promise
的异同?
具体代码展示
index.js:
1 |
|
server.js:
1 |
|
后续还将实现的功能:
现在已经将爬取到的数据存到了文件中,后续希望能实现将数据读取出来进行处理分析在页面以图表的形式展现出来。同时希望能做到在页面进行相关操作,从而动态获取数据动态展示数据。
本爬虫的实现是参考原作者的示例来学习的。