前言
记录字母验证码–>古诗文网selenium自动登录
本文是通过python,selenium,ddddocr去完成
附源码(附解析)
一、源码
from selenium import webdriver # # 驱动浏览器
from selenium.webdriver.common.by import By # 选择器
from selenium.webdriver.common.keys import Keys # 按键
from selenium.webdriver.support.wait import WebDriverWait # 等待页面加载完毕,寻找某些元素
from selenium.webdriver.support import expected_conditions as EC ##等待指定标签加载完毕0
import time
import ddddocr # 验证码识别模块
class GS():
def __init__(self):
self.url = 'https://so.gushiwen.cn/user/login.aspx?from=http://so.gushiwen.cn/user/collect.aspx'
self.options = webdriver.ChromeOptions() # 配置文件对象
self.options.add_experimental_option('excludeSwitches', ['enable-automation']) # 设置无头模式
self.browser = webdriver.Chrome(options=self.options)
def code(self):
self.browser.get(self.url) # 打开古诗文登录网页
wait = WebDriverWait(self.browser, 280) # 等待事件
wait.until(EC.presence_of_element_located((By.ID, 'email')))
# 输入账号
login_input1 = self.browser.find_element(By.ID, 'email')
login_input1.send_keys('id')
# 输入密码
login_input2 = self.browser.find_element(By.ID, 'pwd')
login_input2.send_keys('password')
# 等待2秒
time.sleep(2)
# 验证码截图
img = self.browser.find_element(By.CSS_SELECTOR, '#imgCode')
# img.screenshot_as_png
i_c = img.screenshot_as_png
# 保存图片
with open('gushiwen.png', 'wb') as f:
f.write(i_c)
# 通过ddddocr分析数据
ocr = ddddocr.DdddOcr(show_ad=False) # ocr实例对象 # show_ad=False 关闭广告
code_text = ocr.classification(img.screenshot_as_png) # ddddocr识别数据
print(code_text)
code_input = self.browser.find_element(By.XPATH, '//*[@id="code"]')
time.sleep(0.5)
code_input.send_keys(code_text)
time.sleep(0.5)
code_input.send_keys(Keys.ENTER) # 回车
if __name__ == '__main__':
gs = GS()
gs.code()
总结
记录验证码识别