阿里雲+python完成南京大學健康打卡上報


首先去阿里雲官網買一個最便宜的服務器(輕量級服務器即可),然后鏡像選擇為ubuntu 18.04
之后需要在該服務器上安裝python 3.7,這個網上的教程很多,自己搜索 阿里雲ubuntu 18.4 python 3.7就好了,然后需要在服務器 安裝Chrome瀏覽器和ChromeDriver驅動

環境配置好之后 上代碼,需要自己輸入賬號,密碼和打卡地點(地點在注釋里面),程序用了selenium類,因為比較方便。
from unittest import mock


def get_chrome_driver():
    from selenium import webdriver
    options = webdriver.ChromeOptions()
    options.add_argument("headless")
    options.add_argument('--no-sandbox')
    options.add_argument('--disable-gpu')
    options.add_argument('--disable-dev-shm-usage')
    return webdriver.Chrome(options=options)


from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui  import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

from bs4 import BeautifulSoup
import json


username = ''       # 用戶名
password = ''       # 密碼
curr_location = ''  # 打卡地點

def fillOneForm(wid):
    info = '&IS_TWZC=1&IS_HAS_JKQK=1&JRSKMYS=1&JZRJRSKMYS=1'
    link = 'http://ehallapp.nju.edu.cn/xgfw/sys/yqfxmrjkdkappnju/apply/saveApplyInfos.do?WID={wid}&CURR_LOCATION={curr_location}'
    link = link.format(wid=wid, curr_location=curr_location) + info
    driver.get(link)

    html = driver.page_source
    soup = BeautifulSoup(html, 'html.parser')
    ss = soup.select('pre')[0]
    res = json.loads(ss.text)
    if res['code'] == '0':
        if res['msg'] == '成功':
            return 'Success!'
    return 'Failed.'
    

def fillTheForms(res):


    form = res[0]
    if form['TBZT'] == '0':
        print('Date: ' + form['TBRQ'] + '  ' + fillOneForm(form['WID']))


if __name__ == "__main__":
    options = webdriver.ChromeOptions()

    options.add_argument('--headless')
    options.add_argument('--no-sandbox')
    options.add_argument('--disable-gpu')
    options.add_argument('--disable-dev-shm-usage')
    options.add_argument('blink-settings=imagesEnabled=false')
    options.add_experimental_option('excludeSwitches', ['enable-automation'])
    options.add_argument('log-level=3')
    driver = webdriver.Chrome(options=options)
    
    driver.get('https://authserver.nju.edu.cn/authserver/login')
    while True:
        try:
            element = WebDriverWait(browser, 0.5).until(EC.presence_of_element_located((By.ID,"username")))
        finally:
            break

    driver.find_element_by_id("username").send_keys(username)
    driver.find_element_by_id("password").send_keys(password)
    driver.find_element_by_class_name("auth_login_btn").click()

    driver.get('http://ehallapp.nju.edu.cn/xgfw/sys/yqfxmrjkdkappnju/apply/getApplyInfoList.do')

    html = driver.page_source
    soup = BeautifulSoup(html, 'html.parser')
    ss = soup.select('pre')[0]
    res = json.loads(ss.text)

    if res['code'] == '0':
        if res['msg'] == '成功':
            fillTheForms(res['data'])

    print('Completed')
    driver.quit()


這個.py文件如何上傳到服務器呢?
不要直接在服務器復制粘貼,程序會報錯!!!
使用Xshell和xftp這兩個軟件上傳,網上都有教程
上傳之后如何定時打卡呢?
使用crontab -e這個代碼  教程如下(在最后面)
配置完畢后,即可開始打卡


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM