【技巧】如何处理验证码输入错误的问题,两次验证码输入问题

复制代码
import time
from ddddocr import DdddOcr
ocr = DdddOcr()
from DrissionPage import ChromiumPage
page = ChromiumPage()
import pandas as pd
page.get('https://mingshi8.hbte.com.cn/index.php/home/login/login.html')

df = pd.read_excel("jxjyuser.xlsx")
print(df.iloc[0,1])
page.ele('x://input[@class="fl"]').input(df.iloc[0,0])
page.ele('x://*[@id="form1"]/div/ul/li[2]/input').input(df.iloc[0,1])
imgbytes = page.ele('x://a[@class="fr yzmImg"]/img').src()
yzm = ocr.classification(imgbytes)
print(yzm)
page.ele('x://input[@class="txyz fl"]').input('')
time.sleep(2)
imgbytes = page.ele('x://a[@class="fr yzmImg"]/img').src()
yzm = ocr.classification(imgbytes)
page.ele('x://input[@class="txyz fl"]').input(yzm)
page.ele('x://input[@id="zone_login"]').click()

以下是对这段 Python 代码的分析:

代码功能概述

这段代码看起来是一个自动化登录网页并处理验证码的脚本。它主要使用了 DrissionPage 库来操作网页(基于 Chromium 内核),结合 ddddocr 库识别验证码,以及 pandas 库读取 Excel 文件中的数据,目的可能是从 jxjyuser.xlsx 文件获取用户名、密码等登录信息,自动填充到指定网页(https://mingshi8.hbte.com.cn/index.php/home/login/login.html)的登录表单中,然后识别并输入验证码完成登录操作。

代码详细解析

  1. 导入必要的库:

    import time
    from ddddocr import DdddOcr
    ocr = DdddOcr()
    from DrissionPage import ChromiumPage
    page = ChromiumPage()
    import pandas as pd

代码首先导入了 time 模块用于添加延迟(暂停程序执行一段时间),引入 ddddocr 库创建 DdddOcr 实例 ocr 用于验证码识别,导入 DrissionPage 中的 ChromiumPage 类并实例化 page 对象来操作基于 Chromium 的网页,还导入了 pandas 库用于读取 Excel 数据。

  1. 打开目标网页:

    page.get('https://mingshi8.hbte.com.cn/index.php/home/login/login.html')

使用 page 对象的 get 方法打开指定的登录页面。

  1. 读取 Excel 数据并获取特定单元格的值:

    df = pd.read_excel("jxjyuser.xlsx")
    print(df.iloc[0, 1])

通过 pandas 的 read_excel 函数读取 jxjyuser.xlsx 文件内容到 df 数据框中,然后使用 iloc 索引方式打印出第一行第二列(索引从 0 开始)的数据,这里可能是获取登录密码等相关信息。

  1. 填充用户名和密码到登录表单:

    page.ele('x://input[@class="fl"]').input(df.iloc[0, 0])
    page.ele('x://*[@id="form1"]/div/ul/li[2]/input').input(df.iloc[0, 1])

分别使用 page 对象找到对应 XPath 的网页元素(输入框),并将从 Excel 中读取的第一行第一列(可能是用户名)和第一行第二列(可能是密码)的数据填充到相应的输入框中。

  1. 获取验证码图片并识别第一次验证码:

    imgbytes = page.ele('x://a[@class="fr yzmImg"]/img').src()
    yzm = ocr.classification(imgbytes)
    print(yzm)

先获取验证码图片的字节数据(通过获取图片元素的 src 属性),然后使用 ocr 对象的 classification 方法识别验证码,将识别结果打印出来。不过这里存在一个问题,后续代码中在识别出验证码后没有立即填充到验证码输入框中,而是先清空了该输入框,然后又重新获取验证码进行识别和填充,逻辑上有点不太清晰,也许可以直接在第一次识别后就进行填充。

  1. 处理验证码输入相关操作:

    page.ele('x://input[@class="txyz fl"]').input('')
    time.sleep(2)
    imgbytes = page.ele('x://a[@class="fr yzmImg"]/img').src()
    yzm = ocr.classification(imgbytes)
    page.ele('x://input[@class="txyz fl"]').input(yzm)

先是清空验证码输入框内容,暂停 2 秒(通过 time.sleep(2)),然后重新获取验证码图片字节数据、识别验证码,并将新识别的验证码填充到验证码输入框中,这里的重复获取验证码操作如果不是网站有特殊要求(比如验证码有时间限制等情况),可能是不必要的开销。

  1. 点击登录按钮:

    page.ele('x://input[@id="zone_login"]').click()

找到登录按钮对应的网页元素并执行点击操作,尝试提交登录表单完成登录。

总体来说,这段代码实现了一个基本的自动化登录网页的流程框架,但在实际使用中可以根据具体情况进一步完善和优化。

相关推荐
迪康Defender2 小时前
终端供应链安全:应用白名单与软件正版化检测落地|终端安全治理实践
运维·服务器·网络·安全·web安全·自动化·运维开发
天远API8 小时前
零信任架构实战:基于天远租凭分期报告构建自动化智慧租房免押分期履约评估网关
运维·人工智能·架构·自动化
我要见SA姐18 小时前
Chrome 扩展安全攻防实录:从权限滥用到供应链投毒
运维·人工智能·python·机器学习·自动化
sun153690275728 小时前
基坑边坡监测:振弦式土压力计选型、安装埋设与数据采集方案
大数据·物联网·自动化
Land03298 小时前
财务RPA落地指南:银企对账、发票三单匹配、ERP台账自动化,RPA离线方案解析
服务器·自动化·rpa
Frag0ut9 小时前
Notepad++ 宏录制自动化实战:让重复操作一键完成(2026效率版)
自动化·notepad++·macros·批量处理·宏录制·一键操作·重复操作自动化
DeepVisionary10 小时前
为拿并网许可,OpenAI在佐治亚新园区同意高峰期断电三成
python·自动化
EnCi Zheng11 小时前
Agent自动化系统怎么搭-从Super-agent架构到事件驱动调度的完整指南
自动化·agent·领导力·调度系统·super-agent
GJGCY12 小时前
券商舆情智能体如何设计?事件聚类去重、主体消歧与风险事件抽取技术解析
经验分享·ai·金融·自动化·证券·智能体
天远数科13 小时前
零信任架构实战:基于天远全能家政风险报告构建自动化即时到家保洁与短工抢单安全核验网关
运维·人工智能·架构·自动化