这里只用了cheerio,我是想把爬虫的一般流程抽象出来,以满足更多业务场景的需求。
静态网页
自动重试、自动存档、人工干预校准
npm install
node index.js
.
├── README.md
├── data.json // 存档分页数据 二维数组[pageIndex, dataIndex]
├── index.js // node脚本
├── list.json // 输出打印数据
└── package.json
主要职能:
- 循环抓取数据
- 进度初始化、自动保存进度
- 异常处理
- 人工干预校准
- 打印输出结果
处理业务
主要职能:
- 防止网络波动,自动重试,封装请求函数
- 数据分页爬取,使用二维数组存储
- 校验匹配结果准确性
尽量用node
高版本,低版本对es6
语法支持不是很好。
我用的vscode
,本地装了nvm
,debug
的时候会出现node
版本号不对的情况,即使是切换了版本号也不行。
- 切换
nvm
默认版本号nvm alias default 8.11.1
,因为vscode
执行终端使用的是默认版本。 - 添加
runtimeExecutable
到你的.vscode/launch.json
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "启动程序",
"program": "${workspaceFolder}/index.js",
"runtimeExecutable": "${env:HOME}/.nvm/versions/node/v8.11.1/bin/node"
}
]
}
很多人觉得要先把流程设计出来,再写代码。
其实我经常这样的,先撸,遇到问题再作调整,最后再把所有流程串起来。
- 出发点是理想状况,实施过程中肯定还会遇到很多问题,边做边调整会更好
- 经验不丰富,行动比想象更有效
一是框架更成熟,支持也更广泛;二是语法更适合