python+selenium+pytesseract实现自动识别简单验证码,并且自动登陆网站

文章目录

  • 功能介绍
  • 首先安装需要的库
  • 编写代码

功能介绍

本文章实现自动识别验证码并且自动登陆网站,完全不需要人工操作
Python版本:3.6
Selenium:selenium 是一个用于 Web 应用程序测试的工具,支持多平台、多浏览、多语言去实现自动化测试。
Pillow:python中进行图像处理的库
Pytesseract:图像识别工具

首先安装需要的库

1、安装Python就不用写啦,不知道的可以去搜一下
2、安装Selenium库:win+r输入cmd,pip install selenium
3、安装Pillow库:win+r输入cmd,pip install pillow
4、安装Pytesseract:pip install pytesseract
5、 安装tesseract-ocr :因为 pytesserat 依赖于 tesseract-ocr ,否则无法使用。tesseract-ocr GitHub 官方地址,请根据自己电脑和操作系统版本自行下载
6、修改pytesseract.py文件:不修改的话进行图片识别的时候可能会报错。找到python的安装路径下的pytesseract(例如:C:\Python3.7.1\Lib\site-packages\pytesseract)用任意编辑器打开,查找tesseract_cmd,将原来的 tesseract_cmd = 'tesseract' 改为:tesseract_cmd = 'OCR的安装路径下的tessract.exe'(例如 tesseract_cmd = 'C:\Program Files\Tesseract-OCR\\tesseract.exe'
有的地方需要转义 例如\tesseract.exe
7、安装浏览器驱动:使用Selenium库需要下载对应的驱动
点击此处下载浏览器驱动
安装 chrome 浏览器驱动,下载 ChromeDriver_win64.zip(根据自己系统下载不同的版本驱动),解压
得到 chromedriver.exe 文件放到环境变量 Path 所设置的目录下,如果前面我们已经将(C:\Python34 )
添加到了环境变量 Path 所设置的目录,可以将 chromedriver.exe 放到 C:\Python34\目录下。

编写代码

功能实现代码:

import time
from selenium import webdriver

# 打开谷歌浏览器
from functions import login

browser = webdriver.Chrome()
# 浏览器最大化
browser.maximize_window()

url = "https://sls.cdb.com.cn/#/"
browser.get(url)
print("已经打开助学贷款官方网站")
ID = browser.find_element_by_xpath("//*[@id='app']/div[1]/div[1]/div/div[2]/div[2]/input")
ID.clear()
time.sleep(5)
ID.send_keys("自己注册的身份证号")
print("已经输入身份证号")
password = browser.find_element_by_xpath("//*[@id='app']/div[1]/div[1]/div/div[2]/div[3]/input")
password.clear()
time.sleep(5)
password.send_keys("自己的登陆密码")
print("已经输入了密码")

# 登陆
result = login(browser, url)
while 0 < 1:
    if result != 0:
        login(browser, url)
    else:
        break
time.sleep(10)
# 注销
browser.find_element_by_xpath("//*[@id='bs-example-navbar-collapse-1']/ul/li[2]/a").click()
print("注销登陆")
time.sleep(3)
browser.find_element_by_xpath("//*[@id='app']/div[1]/div[3]/div/div/button[1]").click()
time.sleep(3)
# 退出
browser.quit()
print("关闭浏览器")

functions 代码:

import time

from PIL import Image
import pytesseract as pytesseract


def picture(browser):
    print("现在开始识别验证码")
    # 截图保存
    browser.save_screenshot("picture.png")
    ce = browser.find_element_by_xpath("//*[@id='app']/div[1]/div[1]/div/div[2]/div[4]/div[2]/input")
    print(ce.location)
    left = ce.location["x"]
    top = ce.location["y"]
    right = ce.size["width"] + left
    height = ce.size["height"] + top
    im = Image.open("picture.png")
    img = im.crop((left, top, right, height))
    img.save("picture2.png")
    print("截取图片结束,开始识别")
    image1 = Image.open('picture2.png')
    text = pytesseract.image_to_string(image1)
    print(text)
    return text


def login(browser, url):
    print("输入查询到的二维码")
    yzm = browser.find_element_by_xpath("//*[@id='app']/div[1]/div[1]/div/div[2]/div[4]/div[1]/input")
    yzm.clear()
    yzm.send_keys(picture(browser))
    time.sleep(5)
    print("点击登录按钮")
    login_first = browser.find_element_by_xpath("//*[@id='app']/div[1]/div[1]/div/div[2]/div[5]/input")
    login_first.click()
    time.sleep(3)
    print("获取当前页面的URL")
    url_first = browser.current_url
    print(url_first)
    print("登陆页面URL:%s" % url)

    if url != url_first:
        print("登陆成功")
        time.sleep(3)
        # 查看申请进度
        browser.find_element_by_xpath("//*[@id='app']/div[1]/div[2]/div[2]/div[1]/div/div/div/div[2]/div[1]/div[1]/div[3]/button").click()
        print("正在查看申请进度")
        return 0
    else:
        print("登陆失败,重新登陆")
        return 1


到此执行第一的文件就可以自动打开助学贷款官网,并且实现自动登陆,以及其他操作。如有疑问请多多交流。

你可能感兴趣的:(python,selenium,pytesseract)