步骤:打开浏览器–>登陆网站(识别验证码)–>自动化操作 难点: 环境要求:selenium pytesseract pillow 安装完以上库后,还需安装chromedriver(selenium的浏览器驱动,edge或firefox也可)和tesseract(用于识别出验证码)
1、验证码的识别:本来想用cookie,但是我们学校的网站的cookie中httponly = False,不能用这种方式绕过登陆。只能识别出验证码后登陆,过了登陆这关后便是一马平川。2、网站元素的识别:世界上最遥远的距离,不是生与死,而是你在我眼前,我却识别不了你。selenium提供多种元素识别方式,常用的有id、name、class、xpath等,一种方式识别不了就换另一种,针对不同元素(不同网页)识别的方式也不同,可参考https://blog.csdn.net/qq_32897143/article/details/80383502
在命令行使用pip命令安装以上第三方库,默认的安装方式很慢,使用镜像网站安装会快很多,直接复制下面这行到cmd
pip install –index https://pypi.mirrors.ustc.edu.cn/simple/ selenium
安装chromedriver:打卡网站https://npm.taobao.org/mirrors/chromedriver/,找到对应自己的版本后下载,将chromedriver.exe文件复制到python的Scripts文件夹下(在cmd中用where python命令可找到自己的安装路径)
安装tesseract:参照https://blog.csdn.net/showgea/article/details/82656515from selenium import webdriver from selenium.webdriver.support.select import Select #专门用来处理下拉框 import pytesseract import os import sys,time from PIL import Image,ImageEnhance website= 'https://www.xxx.com' #打卡的网站 img_address = ['C:\Users\HP--\Pictures\喜欢的照片\image1.png'] #将验证码图片下载下来后存放的地址, driver = webdriver.Chrome() driver.maximize_window()d cnt = 0 #计数多少次识别验证码才成功 while True: #循环识别验证码直到成功 driver.get(website) driver.get_screenshot_as_file(img_adress[0]) #将整个网页截图 img =Image.open(img_address[0]) box = (1217 , 496 , 1310 , 541) #设置要裁剪的区域 img = img.crop(box) 裁剪出只有验证码的图片 img.save(img_address[0]) vc = pytesseract.image_to_string(img_address[0]) 保存验证码 account = 'xxxxx' password = 'xxxxx' try: driver.find_element_by_name("account").send_keys(account) driver.find_element_by_name("password").send_keys(password) driver.find_element_by_name("rancode").send_keys(verfication_code) driver.find_element_by_class_name("login").click() if(driver.find_element_by_id("rancode-tips")): #这里是验证码识别不正确点击登陆后出现的错误信息 cnt += 1 continue except: #正确识别后成功登陆,退出while循环 break try: driver.find_element_by_class_name("bdorange.bg_health").click() driver.find_element_by_link_text("健康打卡").click() driver.find_element_by_id("cph_right_ok_submit").click() opt = driver.find_element_by_id("cph_right_e_area") s = Select(opt) s.select_by_visible_text('广东省') #以上三句处理下拉框 driver.find_element_by_id('cph_right_e_location').send_keys('汕头市') driver.find_element_by_id('cph_right_e_observation_0').click() driver.find_element_by_id('cph_right_e_health_0').click() driver.find_element_by_id('cph_right_e_temp').send_keys('36.6') driver.find_element_by_id('cph_right_e_survey01_0').click() driver.find_element_by_id('cph_right_e_submit').click() except: pass driver.quit() print('经过{}次尝试,自动健康打卡完成!'.format(cnt))
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算