首页 > 编程语言 >nodejs抓取接口数据(axios)

nodejs抓取接口数据(axios)

时间:2022-09-21 01:11:05浏览次数:103  
标签:function axios console log nodejs 抓取 sec result var

 

demo:

var axios = require("axios");
var fs = require("fs");
var nodeschedule = require("node-schedule");

var hotListUrl = "https://weibo.com/ajax/side/hotSearch";

var option = {
    headers: {
        'authority': 'weibo.com',
        'pragma': 'no-cache',
        'cache-control': 'no-cache',
        'server-version': 'v2022.09.19.2',
        'x-xsrf-token': 'HZonfoACpKXZIMOMIOMc8y0b',
        'traceparent': '00-d925421b95d78ed73bafd2caed0cbd85-d21a698eff02f887-00',
        'sec-ch-ua-mobile': '?0',
        'client-version': 'v2.35.2',
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36',
        'accept': 'application/json, text/plain, */*',
        'x-requested-with': 'XMLHttpRequest',
        'sec-ch-ua': '" Not A;Brand";v="99", "Chromium";v="99", "Google Chrome";v="99"',
        'sec-ch-ua-platform': '"Windows"',
        'sec-fetch-site': 'same-origin',
        'sec-fetch-mode': 'cors',
        'sec-fetch-dest': 'empty',
        'referer': 'https://weibo.com/newlogin?url=https%3A%2F%2Fweibo.com%2F',
        'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,zh-TW;q=0.7',
        'cookie': 'SINAGLOBAL=5037293883765.11.1592755698570; SCF=AvGPjvoIgatl_Km54N5lsBGA06flluaOTUcjmG2i2L2YeK4HOTa1Voar-0Ev3FcDOINoYW122S9gO8896pNNJ90.; ALF=1669559693; SUB=_2AkMVQ5FKf8NxqwJRmPATymviaIp0zgvEieKjH2CRJRMxHRl-yT9jqnwDtRB6PsO_WLgUxUbfBmN0a8DQ-WByGIgx997S; SUBP=0033WrSXqPxfM72-Ws9jqgMF55529P9D9WFCwjKpB5Xfbk0rIDJhSqQu; UOR=,,www.baidu.com; ULV=1646206596535:8:1:1:682239284045.305.1646206596530:1632125497107; XSRF-TOKEN=HZonfoACpKXZIMOMIOMc8y0b; WBPSESS=durPiJxsbzq5XDaI2wW0N6ET-b2ytp8n58jgCm5B6U2fKwwMxWGcDGWqRlDvg85bX24BypCou0b2NQOLN37NXJngjuq3QEQ_OnB1GSws99oIKpNDkTbFEyDoVbHitmUguOtnqxtlUi3Lz2aC7DZqH-nDFDpiBi4P89n0g-xepkQ=',
    }

}

function parseData(data) {
    var result = []
    realtime = data.data.realtime
    //对于数组对象要这么循环取值
    realtime.forEach(function (element) {
        var title = element.word
        var num = element.num
        result.push({
            title,
            num
        })

    })
    return result

}

function getHotList() {
    return new Promise(((resolve, reject) => {
        axios.get(hotListUrl, option).then(function (resposne) {
            // console.log(resposne.data)
            var result = parseData(resposne.data)
            console.log(result)
            result.length ? resolve(result) : reject("err")
        }).catch(function (err) {
            console.log(err)
        }).finally(function () {
            console.log("完成一次抓取")

        })

    }))


}

/*
 * schedule
*    *    *    *    *    *
┬    ┬    ┬    ┬    ┬    ┬
│    │    │    │    │    │
│    │    │    │    │    └ day of week (0 - 7) (0 or 7 is Sun)
│    │    │    │    └───── month (1 - 12)
│    │    │    └────────── day of month (1 - 31)
│    │    └─────────────── hour (0 - 23)
│    └──────────────────── minute (0 - 59)
└───────────────────────── second (0 - 59, OPTIONAL)
 */
/**
 * 每分钟第30秒定时执行爬取任务
 */

nodeschedule.scheduleJob("*/10 * * * * *", async function () {

    try {
        var d1 = new Date();
        console.log(d1.getTime());
        var res = await getHotList();
        console.log(res)
        fs.open("result.json", "a", function (err1, fd) {
            if (!err1) {
                fs.write(fd, JSON.stringify(res), function (err2) {
                    if (!err2) {
                        fs.close(fd, function (err3) {
                            if (!err3) {
                                console.log("关闭文件成功")
                            } else {
                                console.log("关闭文件失败")
                            }

                        })


                    } else {
                        console.log("写入文件失败")
                    }

                })


            } else {
                console.log("打开文件失败")
            }

        })

    } catch (err) {
        console.log(err)
    }
})

 

标签:function,axios,console,log,nodejs,抓取,sec,result,var
From: https://www.cnblogs.com/tjp40922/p/16714238.html

相关文章

  • 安装eslint后可能因为eslint版本过高导致axios安装失败
    安装eslint后可能因为eslint版本过高导致axios安装失败,也就是包冲突有两个命令可以解决此问题一是--force无视冲突,强制获取远端npm库资源(覆盖之前)二是--legacy-pee......
  • nodeJs + npm 环境搭建
    目录1、安装nodeJS2、配置系统环境变量PATH=nodejs安装目录3、在nodejs安装根目录创建node_cache、node_global两个文件夹4、配置npm5、查看配置是否生效(win+R启动终端......
  • 如何在 React 中进行 Axios POST 请求?
    如何在React中进行AxiosPOST请求?我们将制作一个AxiosPOST请求创建数据或将数据插入数据库。我们将在POST请求中发送请求参数,并且还将举例发送HTTP标头。在......
  • 前端Nodejs-Day34
    Node.js:基于ChromeV8引擎的Javascript运行环境浏览器中js的运行环境:前端运行环境Nodejs中js的运行环境:后端运行环境(无法调用DOM和BOM等浏览器内置API)  ......
  • 记录--通过手写,分析axios核心原理
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助一、axios简介axios是什么?Axios是一个基于promise的HTTP库,可以用在浏览器和node.js中。axios......
  • 19. [实例]抓取网络照片
    1.前言本节编写一个快速下载照片的程序,通过百度图片下载您想要的前60张图片,并将其保存至相应的目录。本节实战案例是上一节《PythonRequest库安装和使用》图片下载案......
  • 基于ts重构axios
    ustbhuangyi老师的基于TypeScript从零重构axios学习记录。知识点TypeScript常用语法:基础类型、函数、变量声明、接口、类、泛型、类型推新、高级类型......
  • nodejs与npm版本管理
    目录一、nodejs版本控制二、npm版本控制1、降级2、升级node与npm版本对应关系及下载:https://nodejs.org/zh-cn/download/releases/使用npm安装包报错“npmWARNnpmnpm......
  • <nodejs>构建web本地服务器报错Error [ERR_STREAM_WRITE_AFTER_END]: write after end
    报错如图:同步完成后还会执行后面的代码后报错,是因为执行完res.end之后不能再执行res.writeHead,解决方法就是把最后res.end的内容删掉就可以正常在浏览器里访问了。也有人......
  • nodejs <a>带参数返回路由标记执行数据库操作
    今天在测试mongo数据库操作维护的时候,测试了一下直接在表内添加操作列来完成数据的删除操作,直接返回数据库ID1、mongo数据操作functiondelStudentid(id,callback){ ......