首页 > 编程 > Python > 正文

Python3自动签到 定时任务 判断节假日的实例

2020-02-15 23:38:55
字体:
来源:转载
供稿:网友

不废话,直接上代码Python3.6

签到代码,只需修改url,账号,密码即可,此处是登录时无验证登录,有验证码的自行补充

 # -*- coding:utf-8 -*- import jsonimport urllib.requestimport datetime # 模拟浏览器打开网站browser = webdriver.Chrome()browser.get('http://**.**.121.54/')# 将窗口最大化 browser.maximize_window()     # 根据路径找到按钮,并模拟进行点击browser.find_element_by_id('btn').click()# 延时2秒,以便网页加载所有元素,避免之后找不到对应的元素time.sleep(2)     # 这里是找到输入框,发送要输入的用户名和密码,模拟登陆browser.find_element_by_id(     "username").send_keys("123456")browser.find_element_by_id(     "password").send_keys("123456")# 在输入用户名和密码之后,点击登陆按钮browser.find_element_by_id('btn').click()time.sleep(2)    # 点击登陆后的页面中的签到,跳转到签到页面browser.find_element_by_id("signInCoin").click()    time.sleep(2)   # 这个print其实没事什么用,如果真的要测试脚本是否运行成功,可以用try来抛出异常print("签到成功")     # 脚本运行成功,退出浏览器browser.quit()

定时任务代码

import timefrom datetime import datetime, timedeltafrom time import sleep SECONDS_PER_DAY = 24 * 60 * 60  def doFunc(): print "do Function..." def doFirst(): curTime = datetime.now() print (curTime) desTime = curTime.replace(hour=20, minute=0, second=0, microsecond=0) print (desTime) delta = curTime - desTime print (delta) skipSeconds = SECONDS_PER_DAY - delta.total_seconds() print ("Next day must sleep %d seconds" % skipSeconds) sleep(skipSeconds) #时间到执行方法 doFunc() if __name__ == "__main__": doFirst()

判断当前日期是否是节假日

1、接口地址:http://api.goseek.cn/Tools/holiday?date=数字日期

2、返回数据:工作日对应结果为 0, 休息日对应结果为 1, 节假日对应的结果为 2

3、节假日数据说明:本接口包含2017年起的中国法定节假日数据,数据来源国务院发布的公告,每年更新1次,确保数据最新

#获取当前时间 格式20180213nowTime=time.strftime('%Y%m%d',time.localtime())date = nowTime#节假日接口server_url = "http://api.goseek.cn/Tools/holiday?date="  vop_url_request = urllib.request.Request(server_url+date)vop_response = urllib.request.urlopen(vop_url_request)  vop_data= json.loads(vop_response.read())#打印返回的Json串  print (vop_data) if vop_data['data']==0: print ('This day is weekend 6-7')elif vop_data['data']==1: print ('This day is weekend 6-7')elif vop_data['data']==2: print ('This day is holiday')else: print ('Error')

根据当前日期是否是节假日进行,自动签到打卡案例

# -*- coding:utf-8 -*- import jsonimport urllib.requestimport datetime # 方便延时加载import timefrom selenium import webdriver SECONDS_PER_DAY = 24 * 60 * 60 ##定时执行的任务  from datetime import datetime, timedeltafrom time import sleep def doFirst(): curTime = datetime.now() print (curTime) desTime = curTime.replace(hour=7, minute=45, second=0, microsecond=0) print (desTime) delta = desTime-curTime  sleeptime = delta.total_seconds() % SECONDS_PER_DAY print(sleeptime) print ("Now day must sleep %d seconds" % sleeptime)  sleep(sleeptime) #nowTime=datetime.datetime.now().strftime('%Y%m%d')#现在 nowTime=time.strftime('%Y%m%d',time.localtime()) date = nowTime server_url = "http://api.goseek.cn/Tools/holiday?date="   vop_url_request = urllib.request.Request(server_url+date) vop_response = urllib.request.urlopen(vop_url_request)   vop_data= json.loads(vop_response.read())   print (vop_data)  if vop_data['data']==0:    # 模拟浏览器打开网站    browser = webdriver.Chrome()    browser.get('http://***.***.***.***/')     # 将窗口最大化    browser.maximize_window()         # 根据路径找到按钮,并模拟进行点击    browser.find_element_by_id('btn').click()    # 延时2秒,以便网页加载所有元素,避免之后找不到对应的元素    time.sleep(2)         # 格式是PEP8自动转的    # 这里是找到输入框,发送要输入的用户名和密码,模拟登陆    browser.find_element_by_id(     "username").send_keys("123456")    browser.find_element_by_id(     "password").send_keys("123456")    # 在输入用户名和密码之后,点击登陆按钮    browser.find_element_by_id('btn').click()    time.sleep(2)        # 点击登陆后的页面中的签到,跳转到签到页面    browser.find_element_by_id("signInCoin").click()    time.sleep(2)       # 这个print其实没事什么用,如果真的要测试脚本是否运行成功,可以用try来抛出异常    print("签到成功")         # 脚本运行成功,退出浏览器    browser.quit() elif vop_data['data']==1:  print ('This day is weekend 6-7') elif vop_data['data']==2:  print ('This day is holiday') else:  print ('Error') if __name__ == "__main__": doFirst()            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表