nodejs使用cherrio实现简单爬虫

爬虫

描述:何为爬虫,就是去他人网站观摩一下数据,根据自己的需求,觉得可用,然后通过代码的方式 copy 一下人家的数据呗。(这种解释是不是很微妙😀)

node

描述:node 是一个基于 google 的 v8 引擎设计的服务端的 js 语言,擅长异步 io 请求。方便易用,有很多成型的 web 框架,例如:express、koa、egg、nest 等。(如需深入了解,自行查阅资料)

node 爬虫的搭建

  1. 需要的模块:

    • request(发送 http 请求) 与 fetch 二选一
    • fetch(对 request 的封装)与 request 二选一
    • cherrio(解析 html 界面,被称为服务端的 jquery) 必选
    • fs(可对爬虫到的数据进行文件的读写操作) 可选
    • node-schedule (时间管理器,可进行自定义时间进行执行) 对于每日需要执行定时任务是必选的
  2. 简单的 demo

新建文件:test.js


const fetch = require("fetch");
const cherrio = require("cherrio");
const schedule = require("node-schedule");

const getHtml = (url) => {
    return fetch(url).then(res => {
            return res.text();
        }).catch(error => {
            return Promise.resolve(null)
        })
}

const main = async () => {
    // 总入口
    // 内容处理
    content();
    // 定时器的开启
    timer();
}

const content = async() => {
    const url = 'www.baidu.com';
    const rsData = await getHtml(url);
    // 通过cherrio对获取到的html文本进行解析
    const $ = cherrio.load(rsData);
    // cherrio的命令,可自行在npm官网下查阅
    // 查询类parent下的test类下的所有文本信息
    const hText =  $('.parent').find('.test').text().trim();
    console.log('获取到的文本信息', hText);
    // 根据自己的需要对数据进行清洗可以写入到文件中也可以放到对应的数据库中。
    // 放入到test.test的文件中
    fs.wirte('test.text', hText, (e)=> {
        if(e){
            console.log("写入文件错误,错误为:", e);
        }
        console.log("写入成功")
    })
}

const timer = () => {
    // 每天晚上8点执行
    const rule = new schedule.RecurrenceRule();
    rule.hour = 20
    rule.minute = 0
    schedule.scheduleJob(rule, function () {
        // TODO 需要补充要执行的处理逻辑。这里执行content()测试事例。
        content();
    })
}

main();

到这里,一个简单的 demo 就实现了,在终端中使用 node test.js 命令即可运行。

结语

希望可以帮助到有需要的小伙伴们。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值