使用nodejs实现简单爬虫

优点:
由于node的驱动语言是javascript,而JavaScript是运行在浏览器上的脚本语言,其优势主要在于便于操作网页上的dom节点。

目标:
以下内容主要通过获取目标网页的节点信息内容。

下载相关依赖:

// 引入依赖
const superagent = require('superagent'); // superagent是nodejs里一个非常方便的客户端请求代码模块(也可以使用request)
const cheerio = require('cheerio'); // 可以理解为一个Node.js版本的Jquery

目标页面爬取相关代码:

//url为目标页面链接
superagent.get(url).end((err, res) => {
     let postlist = getDetailHtml(res.text);
  })

function getDetailHtml(html) {
    console.log("xiangqing")
    let $ = cheerio.load(html); // 使用cheerio
    // F12分析后的节点数据,用Jquery的语法进行过滤、摘取
    var objdata = {
       api = 0,
       pm25 = 0,
       school_img = $('.tp img').attr('src') //直接获取相关图片
    }
    //若有相同节点,使用循环遍历获取到对应的节点内容
    $('.data .span1').each((index, item) => { 
        let elem = $(item);
        if (index == 0) {
            aqi = elem.find('.value').text().trim()
        } if (index == 1) {
            pm25 = elem.find('.value').text().trim()
        }
    })
}

若要将数据存储到文件中,还需引入以下依赖:

引入fs模块

const fs= require(“fs”)

引入path模块

const path=require(“path”)

注释:fs模块为node内置的文件系统模块,负责读写文件。

将爬取到的数据存入本地:

// 保存在data.json中
 fs.writeFile(path.join(__dirname,'data','data.json'),JSON.stringify(objdata),function(err){
     if(err){
         throw err;
     }
     console.log('ok');
 });

总结:
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,有什么问题欢迎小伙伴指正。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值