用nodejs爬数据

前提

首先你要学会用dom节点爬数据,如果你不明白请看接下来的代码,请赶紧学会。
(一)、我们拿王者荣耀的例子来看
在这里插入图片描述
(2)、打开按键盘的F12打开控制台,先查看是否有jquery函数库
在这里插入图片描述

//pack.json
 "dependencies": {
    "cheerio": "^1.0.0-rc.10",
    "iconv-lite": "^0.6.3",
    "koa": "^2.13.4",
    "koa-body": "^4.2.0",
    "koa-router": "^10.1.1",
    "koa-static": "^5.0.0",
    "mongodb": "^4.3.0",
    "mysql": "^2.18.1"
  }

这样说明该网站拥有jquery函数库。如果没有的请先动态插入一个script标签然后设置他的属性’src’导入jquery函数库.
(3)、找到金蝉对应元素,然后确定目标后,开始如下操作。
在这里插入图片描述
以上就是我们通过操作dom来获取网页中的元素。

主体

ok,完成了上部分的操作同时看了我前两部分的博客的同学,现在已经有一定的基础来进行通过nodejs爬数据了。

思路
1.首先发送数据和接收服务器上的数据,其主要核心技术:ajax
2.拿到数据后,连接数据库的模块:mongodb
3.连接数据库后,将数据存入数据库中。

代码,如下:

//引入模块
var https = require('https')
var fs = require('fs');
var iconv = require('iconv-lite')
var cheerio = require('cheerio');
//连接数据库的模块
var mongodb = require('mongodb');
var client = new mongodb.MongoClient('mongodb://localhost:27017');
var url = "https://pvp.qq.com/web201605/herolist.shtml"
var cc = [];



https.get(url, function (res) {
    var chunks = []
    if (res.statusCode == 200) {
        res.on("data", function (chunk) {
            chunks.push(chunk);
        })
        res.on("end",async () => {
            //将获取的代码整合在一起
            var str = Buffer.concat(chunks);
            //处理乱码
            var data = iconv.decode(str, 'gbk');
            var $ = cheerio.load(data);
            var text = $('ul.herolist a')
            var arr = [];
            //获取每个英雄的个人页面,和名字
            for (var i = 0; i < text.length; i++) {
                arr.push({
                    herf: "https://pvp.qq.com/web201605/" + $(text[i]).attr("href"),
                    name: $(text[i]).text()
                })
            }
            //连接数据库并添加
            client.connect(err=>{
                if(err){
                    console.error(err);
                }else{                 client.db('data').collection('list').insertMany(arr).then(res=>{
                        console.log(res);
                        client.close();
                    })
                }
            })
        })
    }
    res.on('error', err => {
        console.error(err);
    })
})

上面就是我们的nodejs爬数据的核心代码。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值