声明,本程序旨在技术交流,喜欢的请帮忙star一下,万分感谢,如不喜欢,请保留意见,谢谢! 前端时间找工作,为了能让自己的简历置顶,特意花钱买了智联的置顶服务, 其实也不贵, 因为之前用过casperjs和phantomjs,就向用这两个插件写个程序,自动去刷新简历,不过这种不花钱的的刷新,肯定没有花钱的好使! 下面开始介绍程序: 项目地址:https://github.com/duzitengg/code.git
这个casperjs 请参阅:http://casperjs.org/ phantomjs:http://phantomjs.org/ 这里不过多介绍这两个插件,如需要,请自己看!
一,主程序在main,js //phantom.outputEncoding = “GBK”;//如果用命令行执行,windows系统需要,否则乱码 var initUrl = ‘http://www.zhaopin.com/’;//招聘网站
//初始化casperjs var casper = require(‘casper’).create({ stepTimeout: 30000, clientScripts: [“jquery.js”], verbose: true, pageSettings: { javascriptEnabled: true, //userAgent: “Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36”, loadImages: true }, onError: function (self, m) { console.log(“onError===================:” + m); self.exit(1); } // logLevel: “debug”, }).start();
//http相关设置 var option = { method: ‘GET’, timeout: 30000, headers: { ‘Content-Type’: ‘application/x-www-form-urlencoded; charset=UTF-8’ } };
//打开网址,并打印title casper.thenOpen(initUrl, option, function () { log(“StartUrl===” + this.getCurrentUrl()); log(“StartTitle===” + this.getTitle()); });
/输入用户名密码/ casper.wait(2000,function () { this.fill(‘div[id=“loginU”]’, { ‘loginname’: ‘’, ‘Password’: ‘’ }, true); casper.capture(‘1111.png’); });
/提交表单/ casper.then(function () { this.evaluate(function () { document.forms[0].submit(); }); }); /关闭弹窗/ casper.wait(2000,function () { this.click(".popup_close"); casper.capture(‘2222.png’); }); //点击刷新按钮 casper.wait(2000,function () { this.clickLabel(“刷新”); }); //程序结束 casper.wait(2000,function () { casper.capture(‘3333.png’); console.log(“程序结束”); this.exit(1); }); casper.run();
二,app.js,这里用node的子进程去模拟命令行,并设置定时任务 var schedule = require(“node-schedule”); var spawn = require(‘child_process’).spawn;
var timer = new schedule.RecurrenceRule(); timer.minute = [10,20,32,40,50,59]; schedule.scheduleJob(timer, function () { console.log(“计时器开始执行”); var oder = spawn(“casperjs”, [“D:\demo\zhilian\main.js”]);
oder.stdout.on("data", function (data) {
console.log("子进程中的打印信息===" + data);
});
oder.stderr.on("data", function (data) {
console.log(data)
});
oder.on("close", function (code) {
console.log("子进程退出程序码==="+code);
});
});
三,启动的时候用node启动就可以了
到这里,整个程序就完了,其实也蛮简单,但是casperjs的功能其实相当强大,里面有很多功能没怎么用上,我之前写过一个seo的项目,用到的功能就多了! 如果有这方面的经验,欢迎交流! 喜欢请star,谢谢!
好吧,自己来顶一下!
使用nightmare
完爆。
var Nightmare = require('nightmare');
var nightmare = Nightmare({show: true});
var url = {
login: "https://abc.com/login", // login url
re: "https://abc.com/re" //简历有刷新按钮的url
};
nightmare
.goto(url.login)
.type('#login_field', option.mail)
.type('#password', option.pwd)
.click('[type="submit"]')
.wait("body.logged-in")
.goto(url.re)
.click('button.re')
.wait('..success')
.end()
.then(function () {
})
.catch(function (error) {
console.error('Search failed:', error);
});
@liuzhengming 我知道這個模塊,當初做一個SEO項目的時候曾試過,功能不如casperjs强大,且不夠靈活!
祈祷