python+selenium3解决126邮箱登录出现验证码问题

研究了好几天,终于解决了126邮箱登录出现的验证码问题!!!
首先需要导包:
1、下载PIL,一个强大的处理图像的库。无法使用pip小工具下载,而且官网没有对应的python3版本,不过可以使用pillow替代PIL,可以从http://www.lfd.uci.edu/~gohlke/pythonlibs/下载对应版本的pillow,然后使用pip工具安装(pip install pillow)。使用导包的时候要注意,导入的依旧是PIL,而不是pillow。
2、下载python对应的超级鹰开发文档。超级鹰是一个验证码识别平台,提供了识别接口,十分方便快捷。从官网https://www.chaojiying.com/下载,同时注册一个账号密码,获取软件ID,这在之后的代码中都会用到。
3、其他的库用pip小工具是可以直接下载的。

代码思路我是参考http://www.manongjc.com/detail/9-srwdzkavnkhigmq.html,思路大家可以看这里的,讲的很清楚。主要可能需要修改的就是验证码图片的位置和鼠标移动的位置,对应的方法是submit_cal(),get_position(),click()。

运行这个程序可能会出现验证失败的问题,应该是我的图片位置定位的不够精确,所以我用循环控制重新验证,验证成功才break。如果出现没有显示验证码或者没有点击汉字的问题,多半是因为原网页变了,需要重新确定验证码位置。

from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver import ActionChains
from chaojiying import Chaojiying_Client
from PIL import Image
from io import BytesIO
import time
from selenium.common import exceptions

class Mail_BrackGeetest():

    def __init__(self,browser,USER,PASSWORD,ID):# 初始化浏览器,超级鹰账号密码和ID,
        self.browser = browser
        self.wait = WebDriverWait(self.browser, 30)
        self.chaojiying = Chaojiying_Client(USER, PASSWORD, ID)

    def open(self):
        '''
        打开网页,最大化窗口,点击密码登录
        :return: None
        '''
        self.browser.get('https://mail.126.com/')
        self.browser.maximize_window()
        self.browser.find_element_by_id("switchAccountLogin").click()

    def quit(self):
        '''
        关闭浏览器
        :return: None
        '''
        self.browser.quit()

    def submit_user(self,username,password):
        '''
        提交账号和密码
        :return: None
        '''
        time.sleep(0.5)
        self.browser.find_element_by_name("email").clear()
        self.browser.find_element_by_name("email"
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值