• Python一炮句搞定网页登录验证码自动输入


    前言:本来是“账号+密码”的登录方式,突然就增加了验证码输入,还30秒一变。

     查看元素

    链接为一个png图片文件,每半分钟一更新,意思就是慢了还不行。

    思路:OCR识别图片中的文本。图片的网络地址直接传送识别?不行。保存图片文件到本地,再识别?不好。截屏再剪切局部区域,太麻烦。直接利用selenium自带的screenshot_as_png高效实现。

    步骤:

    1.百度OCR吧,pip install baidu-aip安装。以前用过,现在居然收费了,一年50块10000次,腾讯好象还可以免费用(ID都在单位电脑上,上班再试试),算了,就急,先用吧。安装后要导入:from aip import AipOcr,当然三个字串不能少:APP_ID、API_KEY、SECRET_KEY。

    2.代码

    def mark_ocr(png_data):##
        client = AipOcr("15441825", "VAg0XiGrW2j1MfMK43Bzmoy5", "3GuciPY1Ziqp4FrTIYcfjGL1Lh95HG7o")
        res = client.basicGeneral(png_data, {})
        txt=res['words_result'][0]['words']
        return txt
        
    def login():
        print('开始登录...')
        obj.get(url_login)
        WebDriverWait(obj,60).until(EC.visibility_of_any_elements_located((By.XPATH,'//*[@id="username"]')))
        pic_obj=obj.find_element_by_id('img_code')#查找验证码图片
        png_data=pic_obj.screenshot_as_png#局部剪切为图片PNG数据
        mark_txt=mark_ocr(png_data)#送百度在线识别为验证码文本
        obj.find_element_by_name('username').send_keys('ID123456')
        obj.find_element_by_id('password').send_keys('X123456abc')
        print(u'账号密码输入完成!')
        obj.find_element_by_id('imgcode').send_keys(mark_txt)#
        print(u'验证码输入完成!')#
        obj.find_element_by_id('fm-login-submit').click()

  • 相关阅读:
    C Primer Plus(6) 中文版 第4章 字符串和格式化输入/输出 4.4 printf()和scanf()
    selenium自动化测试入门 —— 设置等待时间
    STC51单片机学习笔记10——AD测试(stc15w408as)
    Redisson
    DC电源模块过压保护功能介绍
    groovy:SimpleDateFormat 打印当前时间
    c++取出文件路径中的文件名
    Golang可重入锁的实现
    Java-GUI 编程之 Swing
    Logistic回归实战---疝气病症预测病马的死亡率
  • 原文地址:https://blog.csdn.net/woho778899/article/details/128066739