原贴《失业大潮下,高效低耗》修改为导出Excel版本

原贴:失业大潮下,高效低耗寻找合适机会
之前的教程就不赘述了,默认你已经看过了原贴。本帖只是给油猴脚本写一个后端服务,使用的是nodejs

首先写一个后端服务(nodejs),将数据导出为 Excel

const express = require('express');
const bodyParser = require('body-parser');
const cors = require('cors');
const XLSX = require('xlsx');
const moment = require('moment');
const app = express();
app.use(cors());
app.use(bodyParser.json());

app.post('/zhipin.php', (req, res) => {
  const data = JSON.parse(req.body.data);
  let jobList = data.zpData.jobList;

  if (!jobList || jobList.length === 0) { 
    res.status(400).send('No job data found');
    return;
  }

  // 按照最后修改时间进行排序
  jobList.sort((a, b) => moment(b.lastModifyTime) - moment(a.lastModifyTime));

  // 提取你需要的信息
  let output = jobList.map(job => ({
    '职位名称': job.jobName,
    '公司名称': job.brandName,
    '薪资范围': job.salaryDesc,
    '工作经验要求': job.jobExperience,
    //时间格式化为年月日时分秒
    '最后修改时间': moment(job.lastModifyTime).format('YYYY-MM-DD HH:mm:ss'),
    '招聘者': job.bossName + '-' + job.bossTitle
  }));

  // 将数据写入Excel文件
  let ws = XLSX.utils.json_to_sheet(output);
  // 设置列宽
  ws['!cols'] = [
    { wch: 50 },  // '职位名称'
    { wch: 50 },  // '公司名称'
    { wch: 20 },  // '薪资范围'
    { wch: 20 },  // '工作经验要求'
    { wch: 20 }   // '最后修改时间'
  ];

  let wb = XLSX.utils.book_new();
  // 防止文件名重复
  XLSX.utils.book_append_sheet(wb, ws, 'Sheet');
  XLSX.writeFile(wb, 'output' + moment().format('YYYY-MM-DD HH:mm:ss') + '.xlsx');
  res.status(200).send('Data received');
});

const port = process.env.PORT || 3000;
app.listen(port, () => console.log(`Server is running on port ${port}`));

最后修改油猴脚本的服务端地址

然后启动服务就可以了。然后去浏览器访问boss直聘,就可以看到项目所在的根目录有了Excel文件

45 Likes

威武,流弊

1 Like

常规话题软件开发

1 Like

L站因为各位佬友而出彩

6 Likes

cy,希望我毕业的时候还有用

不错 :+1: :+1:

L站因为各位佬友而出彩 :+1:

666

我正在写一个图形化界面ing

惯例还是能用就行,面向过程

现在还在爬数据,处理各种情况下的容错

6 Likes

牛逼,手速真快

这玩意可以做成一个小产品的

2 Likes

加油 :sparkles:

1 Like

用selenium爬始终还是效率太慢了,集中在一个IP出口更容易被风控

2 Likes

帖子回复不了

以前都是用浏览器扩展拦截请求,原来用油猴就能做,又学到了

大佬带我飞

看起来是导出JOB的一个工具

逆天签名

刚好用得上,既高兴又悲哀啊 :rofl:

希望用不上