婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > python實(shí)現(xiàn)自動(dòng)打卡小程序

python實(shí)現(xiàn)自動(dòng)打卡小程序

熱門(mén)標(biāo)簽:長(zhǎng)春人工智能電銷(xiāo)機(jī)器人官網(wǎng) 廈門(mén)crm外呼系統(tǒng)如何 西藏快速地圖標(biāo)注地點(diǎn) n400電話(huà)申請(qǐng)多少錢(qián) 如何在地圖標(biāo)注文字 ai地圖標(biāo)注 地圖標(biāo)注推廣單頁(yè) 百應(yīng)ai電銷(xiāo)機(jī)器人鄭州 女王谷地圖標(biāo)注

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

"""
湖南大學(xué)疫情防控每日自動(dòng)打卡程序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() # 模擬點(diǎn)擊使驗(yàn)證碼加載出來(lái)
    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ò)不佳,無(wú)法加載驗(yàn)證碼圖片")


  def recog_captcha_img(self):

    img = Image.open(self.img_path)
    img = img.convert('L') # P模式轉(zhuǎn)換為L(zhǎng)模式(灰度模式默認(rèn)閾值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) # 保存處理后的驗(yàn)證碼

    ## 調(diào)用百度ocr
    # 識(shí)別碼
    APP_ID = "23779944"
    API_KEY = "FPgsSXsuqXk3twpqVHmNNK6g"
    SECRET_KEY = "nG08oGzErk8CdMvDAynAiGdzfBjHr3NO"
    # 初始化對(duì)象
    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', } # 識(shí)別語(yǔ)言類(lèi)型,默認(rèn)為'CHN_ENG'中英文混合
    # 調(diào)用通用文字識(shí)別
    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 == "賬號(hào)或密碼錯(cuò)誤":
        print("賬號(hào)或密碼錯(cuò)誤!請(qǐng)重新輸入!")
        self.stu_id = input("請(qǐng)輸入學(xué)號(hào):")
        self.passwd = input("請(qǐng)輸入密碼:")
        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()="確認(rèn)"]').click()
      time.sleep(1)

      ## 輸入相關(guān)打卡信息并點(diǎn)擊打卡按鈕
      self.browser.find_elements_by_css_selector('input[placeholder="街道門(mén)牌、樓層房間號(hào)等信息"]')[1].send_keys(self.address)
      temp = self.browser.find_elements_by_css_selector("input[placeholder=請(qǐng)輸入]")
      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é)的朋友!開(kāi)始使用吧!")
  print("=" * 100)

  ## 用戶(hù)輸入
  while True:
    t = input("請(qǐng)輸入你的每日打卡時(shí)間(24小時(shí)制, 例如:00:10):")
    if re.search('^(([0-1][0-9])|(2[1-3])):[0-5][0-9]$', t) == None:
      print("你輸入的時(shí)間格式有誤,請(qǐng)重新輸入!")
      continue
    stu_id = input("請(qǐng)輸入你的學(xué)號(hào):")
    passwd = input("請(qǐng)輸入個(gè)人門(mén)戶(hù)密碼:")
    address = input("請(qǐng)輸入你的打卡詳細(xì)地址(例如:湖南大學(xué)北校區(qū)1舍):")
    tmp_yesterday = input("請(qǐng)輸入你的昨日體溫:")
    tmp_today = input("請(qǐng)輸入你的今日體溫:")
    print("=" * 100)
    if input("請(qǐng)檢查你的輸入是否無(wú)誤,若有誤則輸入y并重新輸入,若無(wú)誤則輸入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) # 實(shí)例化打卡器
  print("正在等待打卡時(shí)間到來(lái)...")
  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)

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

您可能感興趣的文章:
  • Python實(shí)現(xiàn)釘釘/企業(yè)微信自動(dòng)打卡的示例代碼
  • 基于python+selenium自動(dòng)健康打卡的實(shí)現(xiàn)代碼
  • python實(shí)現(xiàn)自動(dòng)打卡的示例代碼
  • python+selenium 簡(jiǎn)易地疫情信息自動(dòng)打卡簽到功能的實(shí)現(xiàn)代碼
  • Python + selenium + crontab實(shí)現(xiàn)每日定時(shí)自動(dòng)打卡功能
  • Python 實(shí)現(xiàn)網(wǎng)課實(shí)時(shí)監(jiān)控自動(dòng)簽到、打卡功能
  • Python實(shí)現(xiàn)i人事自動(dòng)打卡的示例代碼
  • python獲取微信企業(yè)號(hào)打卡數(shù)據(jù)并生成windows計(jì)劃任務(wù)
  • 使用Python實(shí)現(xiàn)企業(yè)微信的自動(dòng)打卡功能
  • Python實(shí)戰(zhàn)之單詞打卡統(tǒng)計(jì)

標(biāo)簽:渭南 內(nèi)江 興安盟 廊坊 拉薩 綿陽(yáng) 亳州 黔東

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《python實(shí)現(xiàn)自動(dòng)打卡小程序》,本文關(guān)鍵詞  python,實(shí)現(xiàn),自動(dòng),打卡,小,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《python實(shí)現(xiàn)自動(dòng)打卡小程序》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于python實(shí)現(xiàn)自動(dòng)打卡小程序的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 武义县| 岫岩| 吉林省| 六安市| 东乌珠穆沁旗| 呼伦贝尔市| 洪雅县| 龙川县| 贡嘎县| 油尖旺区| 麦盖提县| 阜康市| 乌拉特中旗| 宁津县| 昌宁县| 双鸭山市| 文山县| 福鼎市| 巢湖市| 治县。| 古浪县| 大埔区| 交口县| 安溪县| 黑龙江省| 宕昌县| 阆中市| 祁连县| 桃园县| 盐津县| 安多县| 宣威市| 宣城市| 方山县| 华蓥市| 高清| 夏邑县| 六盘水市| 金塔县| 基隆市| 贵州省|