前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Egg 结合 Cheerio 定时抓取数据

Egg 结合 Cheerio 定时抓取数据

作者头像
越陌度阡
发布2020-11-26 10:40:57
1.1K0
发布2020-11-26 10:40:57
举报

Cheerio 是 node.js 的抓取页面的模块,为服务器特别定制的,快速、灵活、适合各种 Web 爬虫程序,可以让我们用 JQuery 语法来解析爬取的网页数据。

1. 安装模块。

代码语言:javascript
复制
cnpm i cheerio --save

2. 引入模块。

代码语言:javascript
复制
var cheerio = require('cheerio');

3. 加载要解析的内容,并处理汉字乱码问题。

代码语言:javascript
复制
const $ = cheerio.load('<h2 class="title">你好,世界!</h2>',{
    decodeEntities: false
})

4. 获取解析的内容中某一个节点的数据。

代码语言:javascript
复制
$('title').html()  

5. 定时抓取实例。

定时抓取一个网站的数据,判断网站是否被篡改。

定义抓取服务。

代码语言:javascript
复制
// app/service/spider.js
'use strict';
const Controller = require('egg').Controller;
class SpiderController extends Controller {
    async requestUrl(url) {
        var result = await this.ctx.curl(url);
        return result;
    }
}

module.exports = SpiderController;

定义定时任务。

代码语言:javascript
复制
// app/schedule/watchDoamin.js
var cheerio = require('cheerio');
module.exports = (app) => {
    return {
        // 任务配置
        schedule: {
            interval: '5s',
            type: 'all'
        },
        // 执行的任务
        async task(ctx) {
            // 监控的网站
            var url = "https://news.baidu.com/";
            // 调用服务抓取数据
            var result = await ctx.service.spider.requestUrl(url);
            // 将数据改为字符串格式的
            var htmlData = result.data.toString();

            // 解析数据
            const $ = cheerio.load(htmlData, {
                // 处理汉字乱码情况
                decodeEntities: false
            });
            var title = $('title').html();

            // 判断网站是否被篡改
            if (title != '百度新闻——全球最大的中文新闻平台') {
                console.log('网站挂掉了或者被修改了');
            } else {
                console.log('正常')
            }
        }
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/03/27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档