nodejs实现简历自动刷新
完整程序GitHub上面可以找到
GitHub地址
想想当时面试每天都刷新简历,有时候还会忘记,晚上回家没事么事干,做了个简单的无头浏览器刷新简历功能
用到的技术
nodejs+nightmare
实现的程序
首先我们需要引用nightmare
const Nightmare= require('nightmare');
我们要实例化nightmare
const nightmare = Nightmare({ show: true });
下面是我们需要的核心代码
.goto 链接要去的url
type模仿 寻找文本框添加自己要找到的文本框并加上需要的文本
click 模拟鼠标的点击事件 方法同上
wait 检查.wait()条件成功之间等待多长时间
.wait(()=>{})当中也可以放置函数(例如可以判断目标文件是否存在的函数)
.end()结束文件
nightmare
//打开网址
.goto("http://www.zhaopin.com/")
//输入
.type("[name='loginname']","*******")
.type("[name='Password']","********")
//点击事件(根据选择器)
.click(".logbtn button")
//等待
.wait(2000)
.goto("https://i.zhaopin.com/")
.wait(2000)
.click("a.myLinkA.linkRefresh")
.end()
.wait(2000)
.catch((error) => {
console.error('Search failed:', error);
});
自动刷新
这样做还是得我们手动刷新,那这样就达不到我们想样的结果,下面我们就将程序改为自动刷新
首先我们需要一个叫做cron的模块,这个模块是一个实现定时计划任务的模块
1、安装模块
$ npm install -g cron
2、启动一个任务
var cronJob = require("cron").CronJob;
//每秒钟执行一次
new cronJob('* * * * * *', function () {
//your job code here
}, null, true, 'Asia/Chongqing');
//每隔30秒执行一次,会在0秒和30秒处执行
new cronJob('*/30 * * * * *', function () {
//your job code here
}, null, true, 'Asia/Chongqing');
//从早上8点到下午18点,每隔半个小时执行一次,会在0分和30分处执行
new cronJob('* */30 8-18 * * *', function () {
//your job code here
}, null, true, 'Asia/Chongqing');
//在每天的10点和18点的第26分钟各执行一次
new cronJob('* 26 10,18 * * *', function () {
//your job code here
}, null, true, 'Asia/Chongqing');
var cronJob = require("cron").CronJob;
3、不立即执行任务,人工启动
var jobid = new cronJob('* 26 10,18 * * *', function () {
//your job code here
}, null, false, 'Asia/Chongqing');
jobid.start();
4,设置时区
cronJob中的时间适合时区有关的,所以需要配合正确的时区,关于时间可以参考这篇文章: centos中查看系统时区和相关设置
5,动态设置时间
var jobid = new cronJob('* * * * * *', function () {
//your job code here
}, null, false, 'Asia/Chongqing');
var second = "12";
var minute = "0";
var hour = "8-19";
var interval = "3";
var time = require("cron").time(second + ' ' + minute + ' ' + hour+ '/' + interval + ' * * *', 'Asia/Chongqing');
jobid.stop();
jobid.setTime(time);
jobid.start();
6,终止cron任务
var jobid = new cronJob('* 26 10,18 * * *', function () {
//your job code here
}, null, true, 'Asia/Chongqing');
...
jobid.stop();
我在这个程序中做的是在每天的10点和18点的第30分钟各执行一次
var cronJob = require("cron").CronJob;
//引入我的需要作业的程序
var App=require("./app");
new cronJob('* 30 09,18 * * *', function () {
console.log("开始执行定时更新任务");
App.appcron();
}, null, true, 'Asia/Chongqing');
这样我们一个简单的定时刷新任务程序就完成