一个简单的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

本文记录了一次使用Node.js实现简单爬虫的过程,包括遇到的编码乱码、异步控制及404错误的问题。在爬取网页时,由于编码不一致导致中文乱码,解决方法是引用iconv-lite库。异步操作使用async/await进行控制,以避免影响程序执行。针对404错误,提出了调整请求并发量、更换IP等策略。作者意识到对异步流程的掌握是关键,并提到Node.js丰富的爬虫库如Cheerio、Puppeteer。
最低0.47元/天 解锁文章
510

被折叠的 条评论
为什么被折叠?



