一个简单的node爬虫踩坑之路
准备工作
最近在看爬虫相关的文章,偶然想起来尝试一下用node来实现一个简单的爬虫。但是爬别的多没意思,当然是爬美女图片啊。。。
这大概 node 里面造的最多的轮子了。
于是,我选取了下面的地址:美女图片戳我,简单分析后,我的目标是通过爬取首页的轮播图,然后爬取轮播图的直链后面的详情大图,并按照图片名称存到指定的文件夹中。
大致流程是下面这个样子的:
看起来挺简单的,选用的技术方案是:
superagent
: 请求库mkdirp
: 创建文件夹async
: 控制并发请求cheerio
: Dom操作库fs
: 内置核心文件读写库
最终的效果
源码:
// 关键在于理清异步流程
'use strict'
let fs = require("fs");
let cheerio = require('cheerio');
let asyncQuene = require("async").queue;
let request = require('superagent');
require('superagent-charset')(request);
const config = {
urlPre: 'http://www.zbjuran.com',
indexUrl: 'http://www.zbjuran.com/mei/',
downloadConcurrent: 2,
};
let getHtmlAsync = (url) => {
return new Promise((resolve,reject) => {
request.get(url).charset('gbk').end((err,res) => {
err ? reject(err) : resolve(cheerio.load(res.text));
})
})
}
let dowloadImg = (albumList) => {
console