本文章实现自动识别验证码并且自动登陆网站,完全不需要人工操作
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
到此执行第一的文件就可以自动打开助学贷款官网,并且实现自动登陆,以及其他操作。如有疑问请多多交流。