手把手教你用nodejs 模拟人工输入账号密码自动登录,爬取网页数据生成xlsx

网页数据抓取并导入xlsx。

xlsx数据批量录入到网页系统中。

自动登录网页,并根据某些值进行某些操作,比如点击按钮,刷新网页。

定点秒杀商品等。


 

情景1:

比如一个网页有一个表格,里面有很多 学生信息(身高,体重,爱好等)。

这时候想把这些数据全部放在xlxs里,手动的话,得一条一条复制

就是有200条信息,你也得复制2-3小时,

但是用本程序,可以自动批量把数据导入到xlsx,只要你运行程序,数秒就把数据下载并生成xlsx文件 (支持翻页数据)


 

情景2:

比如市场调查员,采集了很多人的信息,这时候需要把这些人的信息录入网页登录的系统中,

如果系统不支持xlsx 上传录入,只支持页面表单录入的话,

可以使用本程序,进行批量导入,运行程序后,会模拟人工操作,自动使用xlsx表格数据进行填充表单,自动提交数据。

解放双手。喝杯茶的功夫,数据就导入完毕

 

情景3:

价格秒杀,网页中的秒杀,抢购。手动点击,总是抢不到,这时候使用该软件,可以设置点击频率,到点自动毫秒级自动点击。解放双手。

 

情景4:

有时候需要一直守在一个网页前,不断的刷新页面,当出现某些东西的时候,需要点击按钮或者其他操作。使用本软件可以不用人工盯。设置好条件时,

当条件产生时,会自动帮你执行某些操作。

 

情景5:

需要把网页截取成pdf格式,大量网页批量搞定

 

 

const Nightmare = require("nightmare");
const nightmare = Nightmare({ show: false });
const path = require("path");

// 模拟人工登录
nightmare
  .goto("https://passport.csdn.net/login?code=public")
  .header(
    "User-Agent",
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36"
  )
  .viewport(1920, 1080)
  .wait(3000)
  .wait(".main-select .text-tab:nth-child(2) a")
  .click(".main-select .text-tab:nth-child(2) a")
  .type("#all", "账号")
  .type("#password-number", "密码")
  .wait(2000)
  .click(".form-submit button")
  .wait(5000)
  .html(path.resolve(__dirname, "./outfile"))
  .end(() => "ssss")
  .then((r) => {
    console.log(r);
  })
  .catch((error) => {
    console.error("Search failed:", error);
  });

 

 

const xlsx = require("node-xlsx").default;
const Nightmare = require("nightmare");
const fs = require("fs");
const path = require("path");
const nightmare = Nightmare({ show: false });


//数据抓取并生成xlsx
nightmare
  .goto("http://106.13.68.142/#/assets")
  .header(
    "User-Agent",
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36"
  )
  .viewport(1920, 1080)
  .wait(".el-table__body .el-table__row")
  .evaluate((selector) => {
    const result = [];
    const trs = document.querySelector(selector).children;
    for (let i = 0; i < trs.length; i++) {
      let tds = trs[i].children;
      let trs_data = [];

      for (let j = 0; j < tds.length; j++) {
        trs_data.push(tds[j].innerText);
      }
      result.push(trs_data);
    }
    return result;
  }, ".el-table__body tbody")
  .end()
  .then((data) => {
    const buffer = xlsx.build([{ name: "mySheetName", data: data }], {
      "!cols": [{ wch: 100 }, { wch: 100 }, { wch: 100 }, { wch: 200 }],
    });
    if(!fs.existsSync(path.resolve(__dirname, "./.out"))){
      fs.mkdirSync(path.resolve(__dirname, "./.out"));
    }
    fs.writeFileSync(path.resolve(__dirname, "./.out/"+(new Date().getMinutes() +new Date().getMilliseconds())+".xlsx"), buffer);
  })
  .catch((error) => {
    console.error("Search failed:", error);
  });

如程序对你有帮助,请作者喝杯咖啡,未尝不可。哈哈哈哈

你可能感兴趣的:(了不起的nodejs,node.js,爬虫)