91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python如何實現自動打卡小程序

發布時間:2021-03-19 10:17:42 來源:億速云 閱讀:389 作者:小新 欄目:開發技術

這篇文章主要介紹了python如何實現自動打卡小程序,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

具體內容如下

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("網絡不佳,無法加載驗證碼圖片")


  def recog_captcha_img(self):

    img = Image.open(self.img_path)
    img = img.convert('L') # P模式轉換為L模式(灰度模式默認閾值127)
    count = 165 # 設定閾值
    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) # 保存處理后的驗證碼

    ## 調用百度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)
    # 定義參數變量
    options = {'language_type': 'ENG', } # 識別語言類型,默認為'CHN_ENG'中英文混合
    # 調用通用文字識別
    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("請輸入學號:")
        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()="岳麓區"]').click()
      time.sleep(1)
      self.browser.find_element_by_xpath('//div/button[text()="確認"]').click()
      time.sleep(1)

      ## 輸入相關打卡信息并點擊打卡按鈕
      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("歡迎你湖南大學的朋友!開始使用吧!")
  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("請輸入你的學號:")
    passwd = input("請輸入個人門戶密碼:")
    address = input("請輸入你的打卡詳細地址(例如:湖南大學北校區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
  }

  ## 瀏覽器設置
  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)

感謝你能夠認真閱讀完這篇文章,希望小編分享的“python如何實現自動打卡小程序”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

托里县| 秦皇岛市| 绥德县| 宁城县| 仙居县| 马鞍山市| 宝山区| 镇江市| 武陟县| 南昌市| 普兰店市| 萨迦县| 屏山县| 东阿县| 沙河市| 岗巴县| 横峰县| 娱乐| 溧阳市| 德保县| 南投县| 平顺县| 伊春市| 瓦房店市| 广丰县| 宜春市| 句容市| 龙游县| 长子县| 原平市| 康马县| 汝城县| 通许县| 大城县| 和田市| 南丹县| 河南省| 屏东市| 休宁县| 抚宁县| 枝江市|