node.js爬取目标网站数据。(cheerio-Koa2)

最近受疫情影响迟迟不能复工,在家时与朋友寒暄聊到最近在做什么对方说起了爬虫这个东西,加上自己一时兴起,花了2个多小时简单研究了一下,简单入个门。在此记录一下。

1.开发环境,所需依赖库。

//搭建koa2 脚手架
npm install -g koa-generator
//新建项目
koa2 -e ReptileDemo
//安装基础依赖库
cd ReptileDemo
npm install 

//三方解析目标网站的库。
cnpm install cheerio

2.爬取2个网站的数据。

1.https://www.imooc.com/search/?words=mongodb 为慕课网搜索mongodb结果集。

2.https://www.csdn.net/ 为CSDN 首页右侧今日推荐栏目

const cheerio = require('cheerio');
const http = require('https');

async function crawlingMKWImpl() {
    return new Promise((resolv) => {
        var strHtml = "";
        var results = [];
        http.get('https://www.imooc.com/search/?words=mongodb', function (res) {
            res.on('data', function (chunk) {//监听事件 传输
                strHtml += chunk;
            })
            res.on('end', function () {//数据传输完
                var $ = cheerio.load(strHtml);//cheerio模块开始处理 DOM处理
                $('.search-course-list > div').each((item, i) => {//遍历处理需要爬取的数据
                    var job = {};
                    //爬取内容时,一定要注意标签结构。按标签结构一层一层获取。
                    job.title = $(i).find(".item-detail > a").text().trim();
                    job.desc = $(i).find(".item-detail > p").text().trim();
                    //当一个div中有多个span标签及其他标签且没有选择器时,就要选择下标获取。eq(0)表示处于第一个span标签的内容。
                    job.teacher = $(i).find(".item-detail > div > span > a").eq(0).text().trim();
                    job.class = $(i).find(".item-detail > div > span").eq(1).text().trim();
                    job.viewsNumber = $(i).find(".item-detail > div > span").eq(2).text().trim();
                    job.tag = $(i).find(".item-detail > div > a > span").text().trim();
                    results.push(job);
                })
                console.log(results);
                resolv(results);
            })
        })
    })
}

获取结果:

3,获取CSDN首页右侧今日推荐文章

async function crawlingCSDNImpl() {
    return new Promise((resolv) => {
        var strHtml = "";
        var results = [];
        http.get("https://www.csdn.net/", function (res) {
            res.on('data', function (res) {
                strHtml += res;
            })
            res.on('end', function () {
                var $ = cheerio.load(strHtml);
                $('.feed_company > ul > li').each((item, i) => {
                    var job = {};
                    job.img = $(i).find(".img_box > a").attr('href');
                    job.name = $(i).find(".content > h3").text().trim();
                    results.push(job);
                })
                console.log(results)
                resolv(results)
            })
        })
    })
}

结果:

其实并没有什么难度,只是要理清楚HTML文档结构,一层一层把要剥离的数据文档结构写好就行了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值