page = require('webpage').create() system = require('system') # 用于处理page.evaluate中js脚本的console,使其输出在命令行可见. page.onConsoleMessage = (msg) -> console.log 'CONSOLE: ' , msg # 用于处理异常 page.onError = (msg) -> console.log 'ERROR: ', msg phantom.exit() # 获取调用时的输入参数 # 调用命令格式(设当前脚本文件名称为xxx.coffee): phantomjs xxx.coffee 1 name pass args = system.args if args.length == 4 signType = args[1] uName = args[2] uPass = args[3] else console.log ' execute params are error !' phantom.exit() # signType 打卡类型: 1.早上上班 2.早上下班 3.下午上班 4.下午下班 # uName/uPass 登陆帐号/密码 console.log "--> signType = #{ signType }, uName = #{ uName }, uPass = #{ uPass } " # 预设的打卡时间点 signTime = [83559, 120000, 140559, 180000] now = new Date() nowTime = now.getHours() * 10000 + now.getMinutes() * 100 + now.getSeconds() console.log 'nowTime -> ', nowTime result = switch parseInt(signType, 10) when 1 if nowTime < signTime[0] then '打卡' else '迟到' when 2 if nowTime > signTime[1] then '打卡' else '早退' when 3 if nowTime < signTime[2] then '打卡' else '迟到' when 4 if nowTime > signTime[3] then '打卡' else '早退' else console.log 'signType is error!' phantom.exit() console.log result # 登陆页面. LOGIN_URL = 'http://-1' # 当天的打卡日志列表. SIGN_RESULT_URL = 'http://-2' # 打卡. SIGNTYPE参数用于标识打卡类型 SIGN_URL = 'http://-3?SIGNTYPE=' console.log 'wait for loginning...' # 打开登陆页面 page.open LOGIN_URL, -> console.log 'opened page --> login page' # 将参数:帐号,密码 传入js脚本并执行 !!注意phantomjs与js脚本间的传参方式 page.evaluate (uName, uPass) -> document.getElementsByName('UNAME')[0].value = uName document.getElementsByName('PASSWORD')[0].value = uPass document.form1.submit() , uName, uPass # 截图: 登陆页面 page.render 'login.png' console.log 'wait for getting sign result...' # 在表单提交后等待3秒 setTimeout -> # 打开当天的打卡记录列表 page.open SIGN_RESULT_URL, -> console.log 'opened page --> sign page' # 在当前页面加载后, 等待2秒(因为是ajax处理的缘故) setTimeout -> # 截图: 今天的打卡日志 page.render 'sign0.png' # 使用JS脚本分析页面上的打卡日志table, 并获取请求的打卡类型SIGNTYPE的当前处理情况 isSigned = page.evaluate (signType)-> doc = window.frames['frame1'].children[1].contentDocument table = doc.querySelector '.TableList' trs = table.getElementsByTagName 'tr' tr = trs[signType] tds = tr.getElementsByTagName 'td' res = [tds[3].innerText, tds[4].innerText] console.log res return res ,signType # 根据打卡情况判断是否进行打卡操作 if isSigned[0] == '未登记' and isSigned[1] != '不在登记时间段' console.log 'execute signing... ', SIGN_URL + signType # 进行打卡操作 page.open SIGN_URL + signType, -> console.log 'wait for signing...' # 等待2秒 setTimeout -> # 截图: 此次打卡结果 page.render 'sign1.png' phantom.exit() , 2000 else console.log 'COULD NOT SIGN' phantom.exit() , 2000 , 3000
相关推荐
tp5 利用QueryList + PhantomJS实现抓取淘宝京东天猫商品数据 商品图片,商品详情,规格,参数,价格都能完美获取
利用casperjs +phantomjs实现登录抓取网页 并且截图;下载后解压后,在环境变量path中配置解压后bin目录的地址,如:E:\Program Files\casperjs\bin;E:\Program Files\phantomjs\bin
selenium+phantomjs实现百度模拟登陆
selenium+phantomjs实现新浪微博模拟登陆
php+phantomjs 采集搜狗微信 在window上跑,完全没问题。里面路径改成自己即可。
Python是一种跨平台的计算机程序设计语言,它可以运行在Windows、Mac和各种Linux/Unix系统上。这篇文章主要介绍了Python+Selenium+phantomjs实现网页模拟登录和截图功能,需要的朋友可以参考下
基于selenium和phantomjs爬取胜率王足球预测的信息 基于selenium和phantomjs爬取胜率王足球预测的信息
phantomjs,所有依赖项都已打包,导入eclipse直接运行
WebCollector是一个无须配置、便于二次开发的JAVA爬虫框架(内核),它提供精简的的API,只需少量代码即可实现一个功能强大的爬虫。 爬虫内核: WebCollector致力于维护一个稳定、可扩的爬虫内核,便于开发者进行...
selenium+phantomjs实现各大网站模拟登陆,已实现微博、知乎、QQ空间、CSDN、京东、163邮箱、CSDN、百度
基于Python3的动态网站爬虫,使用selenium+phantomjs实现爬取动态网站, 本项目以爬取今日头条为例.zip
基于python+phantomjs开发的百度文库爬虫.zip 基于python+phantomjs开发的百度文库爬虫.zip 基于python+phantomjs开发的百度文库爬虫.zip 基于python+phantomjs开发的百度文库爬虫.zip
按照系统环境下载phantomjs,下载完成之后,将phantomjs.exe解压到python的script文件夹下 使用selenium+phantomjs实现简单爬虫 from selenium import webdriver driver = webdriver.PhantomJS() driver.get('...
使用c#对京东搜索页进行价格,名称爬取,使用AngleSharp+Selenium.PhantomJS
本文主要介绍了C#使用Selenium+PhantomJS抓取数据的方法步骤,具有很好的参考价值,下面跟着小编一起来看下吧
java+phantomjs+echarts导出图片到服务器,包含JAVA测试类,phantomjs 文件,echarts-convert.js
python seleuim+phantomjs对论坛帖子内容和评论的数据爬取,数据库使用mongodb。新手小白,写得不好见谅
适用于Linux下,内含python3编译包、PhantomJS编译包和python脚本源码,主要用于服务器版本的Linux下需要登陆验证的网站。
spring boot + jpa + echarts + phantomjs + 本地保存图片 前提 运行 echarts 源文件 src/java/test/sample/lines example 如LineTest5, git clone 地址: test 环境可以直接展现 html 页面(见 参考1) 项目构建...