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.测试接口

posted @ 2021-08-10 09:09  松岛川树  阅读(20)  评论(0编辑  收藏  举报