python自动打卡

简介

1.推荐使用selenium库+FireFox_linux浏览器+geckodriver驱动+crontab定时,
2.因为某图系统的底层是使用的data存储,cookie存于服务器与服务器之间,又Chrome浏览器在mac和Linux系统下不支持跨域,所以推荐使用FireFox.
3.另外

使用思路

使用服务器,创建三个python3文件,如下代码所示,使用pip安装selenium库,下载FireFox_linux要与驱动的版本号保持一致.然后创建3个执行python文件sh脚本,使用crontab定时执行脚本。

Morning.py

# encoding=utf8
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.firefox.options import Options
import time

class DailyReport(object):
    def __init__(self):
        self.client = None
        self.index_url = 'http://xxx.xxx.net:xxx/#/'
        self.report_url = 'http://xxx.xxx.net:xxx/#/daily/healthInfo'
        self.data = [
            ('学号xxx', '密码xxx'),
        ]
    def login(self, _username, _password):
        try:
            fireFoxOptions = Options()
            fireFoxOptions.add_argument('--headless')
            self.client = webdriver.Firefox(options=fireFoxOptions)
            self.client.get(self.index_url)
            time.sleep(3)
            username = self.client.find_elements_by_tag_name("input")[0]
            password = self.client.find_elements_by_tag_name('input')[1]
            username.send_keys(_username)
            password.send_keys(_password)
            submit_button = self.client.find_elements_by_tag_name("button")[0]
            submit_button.click()

        except NoSuchElementException:
            print(self.get_current_time(), ' 提交异常! 打卡失败!')
        else:
            time.sleep(2)
            print(self.get_current_time() + ' ' + '登录成功!')
            self.client.get(self.report_url)
            time.sleep(7)

            daily_healthy = self.client.find_element_by_xpath('//*[@id="pane-0"]/form/button')
            daily_healthy.click()
            print('提交按钮已点击')
            time.sleep(20)
            daily_confrim = self.client.find_element_by_xpath('/html/body/div[2]/div/div[3]/button[2]')
            daily_confrim.click()
            time.sleep(3)
            print('打卡结束')
        finally:
            time.sleep(5)
            self.client.quit()
            print('浏览器退出...\n--------------\n')

    def run(self):
        for msg in self.data:
            self.login(msg[0], msg[1])
            self.post_data()
            print('Python script completed at ' + self.get_current_time() + '\n--------------\n')
            # self.loginTest()

    @staticmethod
    def get_current_time():
        return time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())


if __name__ == '__main__':
    obj = DailyReport()
    obj.run()

Noon.py

# encoding=utf8
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.firefox.options import Options
import time

class DailyReport(object):
    def __init__(self):
        self.client = None
        self.index_url = 'http://xxx.xxx.net:xxx/#/'
        self.report_url = 'http://xxx.xxx.net:xxx/#/daily/healthInfo'
        self.data = [
            ('学号xxx', '密码xxx'),
        ]
    def login(self, _username, _password):
        try:
            fireFoxOptions = Options()
            fireFoxOptions.add_argument('--headless')
            self.client = webdriver.Firefox(options=fireFoxOptions)
            self.client.get(self.index_url)
            time.sleep(3)
            username = self.client.find_elements_by_tag_name("input")[0]
            password = self.client.find_elements_by_tag_name('input')[1]
            username.send_keys(_username)
            password.send_keys(_password)
            submit_button = self.client.find_elements_by_tag_name("button")[0]
            submit_button.click()

        except NoSuchElementException:
            print(self.get_current_time(), ' 提交异常! 打卡失败!')
        else:
            time.sleep(2)
            print(self.get_current_time() + ' ' + '登录成功!')
            self.client.get(self.report_url)
            time.sleep(7)

            noon_Tag = self.client.find_element_by_xpath('//*[@id="tab-1"]')
            noon_Tag.click()

            time.sleep(7)
            daily_healthy = self.client.find_element_by_xpath('//*[@id="pane-1"]/form/button')
            daily_healthy.click()
            print('提交按钮已点击')
            time.sleep(20)
            daily_confrim = self.client.find_element_by_xpath('/html/body/div[2]/div/div[3]/button[2]')
            daily_confrim.click()
            time.sleep(3)
            print('打卡结束')
        finally:
            time.sleep(5)
            self.client.quit()
            print('浏览器退出...\n--------------\n')

    def run(self):
        for msg in self.data:
            self.login(msg[0], msg[1])
            self.post_data()
            print('Python script completed at ' + self.get_current_time() + '\n--------------\n')
            # self.loginTest()

    @staticmethod
    def get_current_time():
        return time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())


if __name__ == '__main__':
    obj = DailyReport()
    obj.run()

Night.py

# encoding=utf8
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.firefox.options import Options
import time

class DailyReport(object):
    def __init__(self):
        self.client = None
        self.index_url = 'http://xxx.xxx.net:xxx/#/'
        self.report_url = 'http://xxx.xxx.net:xxx/#/daily/healthInfo'        self.data = [
            ('学号xxx', '密码xxx'),
        ]
    def login(self, _username, _password):
        try:
            fireFoxOptions = Options()
            fireFoxOptions.add_argument('--headless')
            self.client = webdriver.Firefox(options=fireFoxOptions)
            self.client.get(self.index_url)
            time.sleep(3)
            username = self.client.find_elements_by_tag_name("input")[0]
            password = self.client.find_elements_by_tag_name('input')[1]
            username.send_keys(_username)
            password.send_keys(_password)
            submit_button = self.client.find_elements_by_tag_name("button")[0]
            submit_button.click()

        except NoSuchElementException:
            print(self.get_current_time(), ' 提交异常! 打卡失败!')
        else:
            time.sleep(2)
            print(self.get_current_time() + ' ' + '登录成功!')
            self.client.get(self.report_url)
            time.sleep(7)
            # 拿到中午标签
            Night_Tag = self.client.find_element_by_xpath('//*[@id="tab-2"]')
            Night_Tag.click()

            time.sleep(7)
            daily_healthy = self.client.find_element_by_xpath('//*[@id="pane-2"]/form/button')
            daily_healthy.click()
            print('提交按钮已点击')
            time.sleep(20)
            daily_confrim = self.client.find_element_by_xpath('/html/body/div[2]/div/div[3]/button[2]')
            daily_confrim.click()
            time.sleep(3)
            print('打卡结束')
        finally:
            time.sleep(5)
            self.client.quit()
            print('浏览器退出...\n--------------\n')

    def run(self):
        for msg in self.data:
            self.login(msg[0], msg[1])
            self.post_data()
            print('Python script completed at ' + self.get_current_time() + '\n--------------\n')
            # self.loginTest()

    @staticmethod
    def get_current_time():
        return time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())


if __name__ == '__main__':
    obj = DailyReport()
    obj.run()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值