美文网首页
后端扣取前端代码中数据 -- cheerio [百万级]

后端扣取前端代码中数据 -- cheerio [百万级]

作者: squidbrother | 来源:发表于2020-03-09 15:55 被阅读0次
    概述

    Fast, flexible & lean implementation of core jQuery designed specifically for the server.
    快速,灵活和精益实现的核心jQuery专为服务器设计

    周下载量(Weekly Downloads)
    4,375,541

    安装以及使用

    安装:
    npm install cheerio -S

    使用:
    前端代码段

    <ul id="fruits">
      <li class="apple">Apple</li>
      <li class="orange">Orange</li>
      <li class="pear">Pear</li>
    </ul>
    

    后端扣取数据

    const cheerio = require('cheerio');
    const $ = cheerio.load('<ul id="fruits">...</ul>');
    $('.apple').text()
    //=> Apple
    
    实例

    扣取豆瓣某一个列表

    const Koa = require('koa');
    const KoaRouter = require('@koa/router');
    const app = new Koa();
    const router = new KoaRouter();
    const axios = require('axios');
    
    //cheerio
    const cheerio = require('cheerio')
    let $ = '';
    let movieRes = [];
    let tempTxt = '';
    
    //配置路由
    router.get('/index',async(ctx,next)=>{
        ctx.body = '首页';
    });
    router.get('/news',async(ctx,next)=>{
        ctx.body = '新闻';
        //获取新闻信息
        try{
            var _links = 'https://movie.douban.com/top250';
            var dataAll = await axios.get(_links);
            if(dataAll.status==200){
                //1.获取代码段
                $ = cheerio.load(dataAll.data);
                //2.扣取字段
                $('.article li').each((index,ele)=>{
                    var _txt = $(ele).find('.info span').eq(0).text();
                    //console.log(_txt);
                    movieRes.push(_txt);
                });
                ctx.body = movieRes;
            };
        }catch(err){
            console.log('err');
            console.log(err);
        }
        
    });
    
    //404
    app.use(async(ctx,next) => {
        await next();
        //console.log(ctx)
        if(ctx.status!=200){
            ctx.body = '无此页面';   //404处理 错误处理 中间件
            ctx.redirect('/index') ;  //重定向到某个页面 
        }
    });
    
    app.use(router.routes());
    app.use(router.allowedMethods()); /*可加可不加,放在启动理由后面 根据ctx.status设置响应头*/
     
    app.listen(3002);
    

    结果如下:


    扣标题

    相关文章

      网友评论

          本文标题:后端扣取前端代码中数据 -- cheerio [百万级]

          本文链接:https://www.haomeiwen.com/subject/iarpdhtx.html