最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python實現(xiàn)自動打卡小程序

 更新時間:2021年03月18日 16:35:39   作者:沉默,掩飾  
這篇文章主要為大家詳細介紹了python實現(xiàn)自動打卡小程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了python實現(xiàn)自動打卡小程序的具體代碼,供大家參考,具體內(nèi)容如下

"""
湖南大學(xué)疫情防控每日自動打卡程序v1.0
author: Liu
time:2021/3/16
"""


from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from PIL import Image
from bs4 import BeautifulSoup
import requests
from aip import AipOcr
import time
from datetime import datetime
import re



class DailyAttend(object):


  def __init__(self, browser, stu_id, passwd, t, address, tmp_yesterday, tmp_today):

    self.browser = browser
    self.stu_id = stu_id
    self.passwd = passwd
    self.t = t
    self.address = address
    self.tmp_yesterday = tmp_yesterday
    self.tmp_today = tmp_today
    self.img_path = "captcha.png"


  def get_captcha_img(self):
    url = "https://fangkong.hnu.edu.cn/app/#/login?redirect=%2Fhome"
    self.browser.get(url)
    self.browser.find_element_by_class_name("vcdoe-tips").click() # 模擬點擊使驗證碼加載出來
    time.sleep(2)
    webpage = self.browser.page_source
    soup = BeautifulSoup(webpage, features="html.parser")
    div = soup.find("div", attrs={"class": "login-content"})
    src = div.find_all("img")[2].attrs["src"] # 從html中解析出圖片鏈接
    r = requests.get(src)
    if r.status_code == 200:
      open(self.img_path, "wb").write(r.content)
    else:
      print("網(wǎng)絡(luò)不佳,無法加載驗證碼圖片")


  def recog_captcha_img(self):

    img = Image.open(self.img_path)
    img = img.convert('L') # P模式轉(zhuǎn)換為L模式(灰度模式默認閾值127)
    count = 165 # 設(shè)定閾值
    table = []
    for i in range(256):
      if i < count:
        table.append(0)
      else:
        table.append(1)

    img = img.point(table, '1')
    img.save(self.img_path) # 保存處理后的驗證碼

    ## 調(diào)用百度ocr
    # 識別碼
    APP_ID = "23779944"
    API_KEY = "FPgsSXsuqXk3twpqVHmNNK6g"
    SECRET_KEY = "nG08oGzErk8CdMvDAynAiGdzfBjHr3NO"
    # 初始化對象
    client = AipOcr(APP_ID, API_KEY, SECRET_KEY)

    # 讀取圖片
    def get_file_content(file_path):
      with open(file_path, 'rb') as f:
        return f.read()

    image = get_file_content(self.img_path)
    # 定義參數(shù)變量
    options = {'language_type': 'ENG', } # 識別語言類型,默認為'CHN_ENG'中英文混合
    # 調(diào)用通用文字識別
    result = client.basicGeneral(image, options) # 高精度接口 basicAccurate
    for word in result['words_result']:
      self.captcha = (word['words'])



  def login(self):

    ## 登錄
    while True:
      self.browser.find_element_by_css_selector("[type=text]").send_keys(self.stu_id)
      self.browser.find_element_by_css_selector("[type=password]").send_keys(self.passwd)
      self.browser.find_element_by_css_selector("[type=number]").send_keys(self.captcha)
      self.browser.find_element_by_tag_name("button").click()
      time.sleep(2)
      page = self.browser.page_source
      html = BeautifulSoup(page, features="html.parser")
      err_message = html.find("p", attrs={"class": "el-message__content"})
      if err_message.text == "登錄成功":
        print("登錄成功!")
        break
      elif err_message.text == "賬號或密碼錯誤":
        print("賬號或密碼錯誤!請重新輸入!")
        self.stu_id = input("請輸入學(xué)號:")
        self.passwd = input("請輸入密碼:")
        continue
      else:
        self.get_captcha_img()
        self.recog_captcha_img()
        continue


  def attend(self):
    success_messages = self.browser.find_elements_by_css_selector('p[class=el-message__content]')
    success_messages = [message.text for message in success_messages]
    if "今日已打卡" in success_messages:
      print("今日已打卡!")
      time.sleep(60)
    else:
      ## 選擇打卡定位
      self.browser.find_elements_by_xpath('//div/span[text()="正在獲取定位..."]')[1].click()
      time.sleep(1)
      for i in range(17):
        self.browser.find_elements_by_xpath('//ul/li')[i + 1].click()
      time.sleep(1)
      self.browser.find_element_by_xpath('//ul/li[text()="岳麓區(qū)"]').click()
      time.sleep(1)
      self.browser.find_element_by_xpath('//div/button[text()="確認"]').click()
      time.sleep(1)

      ## 輸入相關(guān)打卡信息并點擊打卡按鈕
      self.browser.find_elements_by_css_selector('input[placeholder="街道門牌、樓層房間號等信息"]')[1].send_keys(self.address)
      temp = self.browser.find_elements_by_css_selector("input[placeholder=請輸入]")
      temp[0].send_keys(self.tmp_yesterday)
      temp[1].send_keys(self.tmp_today)
      self.browser.find_elements_by_css_selector(
        'button[class="btnDaka van-button van-button--info van-button--normal van-button--block"]')[1].click()
      today = datetime.now().strftime("%Y-%m-%d")
      print(today + "打卡成功!")
      time.sleep(60)




if __name__ == "__main__":

  ## 歡迎界面
  print("=" * 100)
  print("打卡小程序")
  print("歡迎你湖南大學(xué)的朋友!開始使用吧!")
  print("=" * 100)

  ## 用戶輸入
  while True:
    t = input("請輸入你的每日打卡時間(24小時制, 例如:00:10):")
    if re.search('^(([0-1][0-9])|(2[1-3])):[0-5][0-9]$', t) == None:
      print("你輸入的時間格式有誤,請重新輸入!")
      continue
    stu_id = input("請輸入你的學(xué)號:")
    passwd = input("請輸入個人門戶密碼:")
    address = input("請輸入你的打卡詳細地址(例如:湖南大學(xué)北校區(qū)1舍):")
    tmp_yesterday = input("請輸入你的昨日體溫:")
    tmp_today = input("請輸入你的今日體溫:")
    print("=" * 100)
    if input("請檢查你的輸入是否無誤,若有誤則輸入y并重新輸入,若無誤則輸入n:") == "n":
      print("=" * 100)
      break

  user_info = {
    't': t,
    'stu_id': stu_id,
    'passwd': passwd,
    'address': address,
    'tmp_yesterday': tmp_yesterday,
    'tmp_today': tmp_today
  }

  ## 瀏覽器設(shè)置
  chrome_options = Options()
  chrome_options.add_argument("--headless")
  chrome_options.add_argument("--disable-gpu")
  chrome_options.add_experimental_option('excludeSwitches', ['enable-logging'])
  browser = webdriver.Chrome(executable_path="chromedriver.exe", options=chrome_options)

  ## 打卡
  app = DailyAttend(browser, **user_info) # 實例化打卡器
  print("正在等待打卡時間到來...")
  while True:
    if datetime.now().strftime("%H:%M") == t:
      app.get_captcha_img()
      app.recog_captcha_img()
      app.login()
      app.attend()
    else:
      time.sleep(10)

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 使用Python獲取PDF文本和圖片的精確位置的操作方法

    使用Python獲取PDF文本和圖片的精確位置的操作方法

    在處理和分析PDF文檔時,獲取文本和圖片在頁面上的精確位置是一個重要的操作,通過確定這些元素的具體坐標,我們可以實現(xiàn)對PDF內(nèi)容的更精細控制和理解,本文將介紹如何使用Python獲取PDF文本和圖片在頁面上的位置坐標,需要的朋友可以參考下
    2024-12-12
  • Python超有趣實例通過冒泡排序來實現(xiàn)LOL厄斐琉斯控槍

    Python超有趣實例通過冒泡排序來實現(xiàn)LOL厄斐琉斯控槍

    冒泡排序是一種簡單的排序算法,它也是一種穩(wěn)定排序算法。其實現(xiàn)原理是重復(fù)掃描待排序序列,并比較每一對相鄰的元素,當該對元素順序不正確時進行交換。一直重復(fù)這個過程,直到?jīng)]有任何兩個相鄰元素可以交換,就表明完成了排序
    2022-05-05
  • 解決python調(diào)用自己文件函數(shù)/執(zhí)行函數(shù)找不到包問題

    解決python調(diào)用自己文件函數(shù)/執(zhí)行函數(shù)找不到包問題

    這篇文章主要介紹了解決python調(diào)用自己文件函數(shù)/執(zhí)行函數(shù)找不到包問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • 淺談Pycharm最有必要改的幾個默認設(shè)置項

    淺談Pycharm最有必要改的幾個默認設(shè)置項

    今天小編就為大家分享一篇淺談Pycharm最有必要改的幾個默認設(shè)置項,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • python 實現(xiàn)創(chuàng)建文件夾和創(chuàng)建日志文件的方法

    python 實現(xiàn)創(chuàng)建文件夾和創(chuàng)建日志文件的方法

    這篇文章主要介紹了python 實現(xiàn)創(chuàng)建文件夾和創(chuàng)建日志文件的方法,文中給大家介紹了python 讀寫創(chuàng)建文件文件夾的方法 ,需要的朋友可以參考下
    2019-07-07
  • Python本地搭建靜態(tài)Web服務(wù)器的實現(xiàn)

    Python本地搭建靜態(tài)Web服務(wù)器的實現(xiàn)

    本文主要介紹了Python本地搭建靜態(tài)Web服務(wù)器的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • Python模擬登錄的多種方法(四種)

    Python模擬登錄的多種方法(四種)

    這篇文章主要介紹了Python模擬登錄的多種方法,大概給大家提供了四種方法,每種方法給大家介紹的都很詳細,感興趣的朋友跟隨腳本之家小編一起看看吧
    2018-06-06
  • python基于opencv實現(xiàn)人臉識別

    python基于opencv實現(xiàn)人臉識別

    這篇文章主要介紹了python基于opencv實現(xiàn)人臉識別的方法,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2021-01-01
  • 關(guān)于win10在tensorflow的安裝及在pycharm中運行步驟詳解

    關(guān)于win10在tensorflow的安裝及在pycharm中運行步驟詳解

    這篇文章主要介紹了關(guān)于win10在tensorflow的安裝及在pycharm中運行的步驟詳解,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • jupyter notebook如何使用matlab

    jupyter notebook如何使用matlab

    這篇文章主要介紹了jupyter notebook如何使用matlab問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01

最新評論

南靖县| 双辽市| 疏附县| 铜梁县| 开化县| 自治县| 兴国县| 玛纳斯县| 卢湾区| 南宁市| 汪清县| 墨脱县| 迭部县| 罗甸县| 洛扎县| 鄂伦春自治旗| 辽中县| 正镶白旗| 湘乡市| 仙游县| 莱州市| 鹤山市| 双桥区| 南康市| 定安县| 临安市| 锡林浩特市| 黎城县| 三江| 青海省| 甘孜县| 岱山县| 同心县| 延津县| 团风县| 商都县| 福泉市| 泗洪县| 阜平县| 新丰县| 临夏市|