cheerio爬取表情包

cheerio

开发文档

cheerio中文文档 - 简书 (jianshu.com)

简单介绍

cheerio是nodejs的抓取页面模块,为服务器特别定制的,快速、灵活、实施的jQuery核心实现。适合各种Web爬虫程序。

环境配置

npm install axios
npm install cheerio

举一个例子

爬取表情包

const cheerio = require('cheerio');
const axios = require('axios');
const fs = require('fs');
const path = require('path');
let httpUrl = "https://www.doutula.com/article/list/?page=";
//获取总页数
async function getNum(){
  // let res = await axios.get(httpUrl+1);
  // let $ = cheerio.load(res.data);
  // let btnLength = $('.pagination li').length;
  // let allPageNum = $('.pagination li').eq(btnLength-2).find('a').text();
  return 2;
}
//获取一页的表情包
async function getListPage(pageNum){
  let res = await axios.get(httpUrl+pageNum);
    //获取返回的网页信息
  let $ = cheerio.load(res.data);
    //通过选择器找到标签
  $('#home .col-sm-9>a').each((i,element)=>{
      //获取标签的href属性
    let pageUrl = $(element).attr('href');
      //获取标签子元素的文本内容
    let title = $(element).find('.random_title').text();
    let reg = /(.*?)\d/igs;
    let pageTitle=reg.exec(title)[1];
         //创建文件夹用于存放数据
    fs.mkdir('./img/'+pageTitle,function(err){
      if(err){
        console.log(err);
      }else{
        console.log("路径创建成功");
      }
    });
      //对一个表情包进行解析
    paresPage(pageUrl,pageTitle);
  })
}
async function paresPage(url,title){
  var a=0;
  let res = await axios.get(url);
  let $ = cheerio.load(res.data);
  $('.pic-content img').each((i,element)=>{
    let imgUrl = $(element).attr('src');
    let extName = path.extname(imgUrl);
        //补全路径
    let imgPath = `./img/${title}/${title}-${i}${extName}`;
        //以流的形式去下载表情包
    let ws = fs.createWriteStream(imgPath);
    axios.get(imgUrl,{responseType:'stream'}).then(function(res){
      res.data.pipe(ws);
      console.log("图片加载完成:"+imgPath);
      res.data.on('close',function(){
        ws.close();
      });
    });
  });
}
async function spider(){
  let allPageNum = await getNum();
  for(var i=1;i<=allPageNum;i++){
    getListPage(i);
  }
}
spider();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值