简介
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()