开个坑

一 .开始之前准备

1.在浏览器上模拟鼠标和键盘操作
selenium(第三方库)
chromedriver(能在浏览器上自动化的关键)

2.图像识别,解决验证码问题
可以参照这个
pillow
pytesseract
Tesseract-OCR

使用如下指令在cmd中安装

pip install selenium
pip install pillow
pip install pytesseract

二.打开网页并且成功登陆

下学期有一门课在zjooc上,所以我们来尝试zjooc.cn
我们先打开网页,通过xpath来定位,然后输入用户名和密码
然后我们开一个永真循环来输入验证码,因为这个识别是有时候会出问题的
因为登陆之后页面会变,所以循环里的定位会出问题报错,我们正好可以用异常捕获来退出这个永真循环
总得来说zjooc的网页做的是真不错,简单易懂
代码

from selenium import webdriver
from PIL import Image
import pytesseract as pytesseract
import time

#打开网页
driver = webdriver.Chrome()
def login(username,password):
    driver.get('https://www.zjooc.cn/')
    driver.maximize_window()
    driver.find_element_by_xpath('/html/body/div/section/header/div/div[2]/div[1]/div[3]/div[2]').click()
    #输入学号和密码并且登入
    time.sleep(1)
    driver.find_element_by_xpath('/html/body/div/div[2]/div[2]/div[3]/div[1]/input').send_keys(username)
    print('输入用户名成功')
    driver.find_element_by_xpath('/html/body/div/div[2]/div[2]/div[3]/div[2]/input').send_keys(password)
    print('输入密码成功')
    while True:
        url = driver.find_element_by_xpath('/html/body/div/div[2]/div[2]/div[3]/div[3]/img').get_attribute('src')
        driver.save_screenshot("picture.png")
        tmp = driver.find_element_by_xpath("/html/body/div/div[2]/div[2]/div[3]/div[3]/img")
        left = tmp.location["x"]
        top = tmp.location["y"]
        right = tmp.size["width"] + left
        height = tmp.size["height"] + top
        img = Image.open("picture.png")
        img = img.crop((left, top, right, height))
        img.save("sreenshot.png")
        cap = Image.open("sreenshot.png")
        print('获取当前验证码图片成功')
        text = pytesseract.image_to_string(cap)
        print('识别到为:'+text)
        driver.find_element_by_xpath('/html/body/div/div[2]/div[2]/div[3]/div[3]/input').send_keys(text)
        time.sleep(5)
        try:
            driver.find_element_by_xpath('/html/body/div/div[2]/div[2]/div[3]/button').click()
        except:
            print('输入的验证码正确')
            break
        else:
            print('输入的验证码错误,将再次尝试')
        time.sleep(5)
        driver.find_element_by_xpath('/html/body/div/div[2]/div[2]/div[3]/div[3]/input').clear()
if __name__ == '__main__':
    username=''
    password=''
    login(username,password)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值