eggjs使用cheerio爬取数据
cheerio模块主要负责解析html
1.先安装模块
npm install --save cheerio
2.在service层创建新建spider.js
/*
* @FilePath:\app\service\spider.js
*/
'use strict';
const Service = require('egg').Service;
class SpiderService extends Service {
async spider(url) {
const result = await this.ctx.curl(url);
return result;
}
}
module.exports = SpiderService;
3.在controller层里的home.js创建一个函数
async getPictureData(ctx) {
var url = 'https://www.woyaogexing.com/touxiang/nv/2021/1159425.html'; // 以爬取 我要个性网图片为例
const list = await ctx.service.spider.spider(url);
// toString是为了解析出buffer数据
const pageXml = list.data.toString();
// decodeEntities参数是为了解决cheerio获取的中文乱码
const $ = cheerio.load(pageXml, { decodeEntities: false });
const imgListData = [];
// 爬取某一个列表数据
$('a img').each(function () {
let text = $(this).attr('src')
imgListData.push(text);
})
ctx.body = imgListData
}
4.创建路由
router.get("/getPictureData", controller.home.getPictureData);
5.测试接口