node.js——简约帅气的爬取数据(cheerio)

7 篇文章 0 订阅
说到爬取数据(爬虫),一般都想到python,但是今天不谈论python,今天用nodejs爬取数据,以网易新闻网为例(辛苦你了)来做制作demo。

安装

npm install request fs cheerio

安装后,接下来进入正题,创建index.js

// 引入模块
const request = require('request')
const fs = require('fs')
const cheerio = require('cheerio')

// 爬取 https://news.163.com/
request('https://news.163.com/', (err, response, html) => {
    if(!err && response.statusCode == 200) { 	// 判断成功
    	// 进行文件写入到 index.html
        fs.writeFile('index.html', html, 'utf-8', (err) => {
            if(err) throw err
            console.log('success')
        })
    }
})

node index.js运行后,发现文件中多出一个 index.html,很成功你已经爬取了单页网易新闻网,右键运行,完美~~

好啦~到此结束

怎么可能,cheerio 还没用呢?

好,接下来进入真正的正题,再此之前,可以阅览下cheerio中文官网,使用过jq的朋友就对他的语法很有感觉。

const request = require('request')
const fs = require('fs')
const cheerio = require('cheerio')

request('https://news.163.com/', (err, response, html) => {
    if(!err && response.statusCode == 200) {
        const $ = cheerio.load(html);
        var result = [];

        // 遍历
        $('.post').each((i, el) => {
            // 提取数据
            const date = $(el).find('.date').text();
            const title = $(el).children('.post-info').children('.post-title').text();

            const body = $(el).find('.post-body').text();

            result.push({
                id:i,
                year:date,
                title,
                body
            }) 
            // console.log(date, title, body);
            // console.log(result);
        })

        result = JSON.stringify(result);

	// 写入 json文件
        fs.writeFile('data.json', result, 'utf-8', (err) => {
            if(err) throw err;
            console.log('success');
        })
    }
})

在这里插入图片描述

运行后,最后生成新的json文件,得到你想要的数据文档,成功了~~

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值