研究好几天截取图片验证码,今天终于好了,主要图片验证在第二个iframe里面,所以在截取的时候,必须先定位最外面的iframe的坐标(简称frame1),然后在定位嵌套里面的iframe(简称frame2),在定位图片验证码在frame2中的位置,相加获取图片验证码的位置

        frame1_location = self.driver.find_element_by_id("ICBC_login_frame").locationframe1_x = frame1_location['x']frame1_y = frame1_location["y"]# 坐标coordinate = {"frame1_x": frame1_x,"frame1_y": frame1_y,}# 如果文件不存在,就创建文件夹if not os.path.exists(".\pic"):os.mkdir(".\pic")# 截取当前网页命名为printscreen,该网页有我们需要的验证码self.driver.save_screenshot('.\pic\printscreen1.png')frame2_location = self.driver.find_elements_by_id("VerifyimageFrame")[0].locationframe2_x = frame2_location["x"]frame2_y = frame2_location["y"]# # 切换frame,进入图片验证码self.driver.switch_to.frame("VerifyimageFrame")imgelement = self.driver.find_element_by_xpath("//img[contains(@title,'点击图片可刷新')]")  # 定位验证码frame1_x = coordinate["frame1_x"]frame1_y = coordinate["frame1_y"]left = int(frame1_x + frame2_x)top = int(frame1_y + frame2_y)size = imgelement.size  # 获取验证码元素长高element_width = int(left + size['width'])element_height = int(top + size["height"])# 打开截图i = Image.open(".\pic\printscreen1.png")# 使用Image的crop函数,从截图中再次截取我们需要的区域frame4 = i.crop((left, top, element_width, element_height))frame4 = frame4.convert('RGB')frame4.save('.\pic\save1.jpg')  # 保存我们接下来的验证码图片 进行打码# 转化为base64with open(".\pic\save1.jpg", "rb") as f:# b64encode是编码,b64decode是解码base64_data = base64.b64encode(f.read())print(base64_data)

如果想要和我交流,就关注我的微信公众号:梓栋Code

Python使用selenium模拟登陆,截取图片验证码并转化为base64相关推荐

  1. python中selenium(模拟登陆)+pytesseract(自动识别验证码)应用例子之查询住房公积金

    这里以查询深圳住房公积金为例(http://gjj.sz.gov.cn/fzgn/zfcq/) from selenium import webdriver # 模拟浏览器操作 from PIL im ...

  2. java使用Selenium模拟登陆58(验证码登陆密码登陆)若快平台识别文字点击验证码

    文章目录 写在前面 配置环境 Selenium入门 使用Selenium登陆58 若快平台识别文字点击验证码 附: By对象中的 xpath & cssSelector获取方式** 不打开浏览 ...

  3. selenium 模拟登录 突破图片验证码(豆瓣网)

    from selenium import webdriver import time import requests from lxml import etree import base64# 请求浏 ...

  4. selenium模拟登陆截取验证码

    向百度大大下手吧... 大致思路 1.打开chrome 2.进入百度 3.点击登录 4.切换账号密码登录 5.尝试获取验证码截图(密码输错三次就可以出现验证码了) GKD from selenium ...

  5. 使用selenium模拟登陆,手机验证码

    大众点评 from time importsleepfrom selenium importwebdriverimportrandomdefprocess_request(self,request,s ...

  6. python利用selenium模拟登陆163邮箱

    首先需要定位登录框的地址,分析过程见 https://www.jianshu.com/p/d59a5611c053 登陆框标签是一个iframe,且id每次都是不一样的,因此不能按id值查找,这里先按 ...

  7. python爬虫爬网站数据登录_使用webdriver+urllib爬取网页数据(模拟登陆,过验证码)...

    urilib是python的标准库,当我们使用Python爬取网页数据时,往往用的是urllib模块,通过调用urllib模块的urlopen(url)方法返回网页对象,并使用read()方法获得ur ...

  8. selenium模拟登陆之截屏验证码位置跑偏

    在用selenium做爬虫的模拟登陆时遇到验证码图片截取下来的和目标区域的图片不匹配 截到的: 目标是这样的: 明显坐标写的不对,导致截屏区域不是验证码的区域. 只能一步一步取修改坐标,来确定具体的图 ...

  9. Python使用selenium过天眼查滑块验证码反爬实现模拟登录

    Python使用selenium过天眼查滑块验证码反爬实现模拟登录 天眼查的滑块验证码样式 一顿操作到滑块验证码阶段 破解滑块验证码 结束 天眼查的滑块验证码样式 在输入账号和密码后会发现这个令人讨厌 ...

最新文章

  1. 2.2 Logistic 回归-深度学习-Stanford吴恩达教授
  2. 2017计算机三级哪个好考,快速突破2017年计算机三级考试的几大复习阶段
  3. 【算法】合并两个有序数组【LeetCode】
  4. Java语言中的----继承(二)
  5. vdbench和fio
  6. Java中常见的异常有哪些?
  7. 2015QS世界大学排名-[转]
  8. windows 10 安装jira进行开发管理
  9. 安卓开关Switch使用的小细节
  10. win7 共享wifi
  11. Android 虚拟分区详解(三) 分区状态变化
  12. 海康威视错误代码0xf_调用海康威视sdk获取车牌号
  13. Open Graph 分享预览
  14. java自学开发编程路线图
  15. 不装了,我开源了5款人脸生成器!超模脸、网红脸、萌娃脸...
  16. 配音秀今天怎么显示服务器,教你如何玩转配音秀
  17. python3 Win32 exception occurred releasing IUnknown at 0x26dc1458 ----错误已经解决
  18. java做主成分分析_主成分分析PCA
  19. j计算机应用研究,崔妍, 包志强. 关联规则挖掘综述[J]. 计算机应用研究, 2016, 33(2): 330-334....
  20. 11g OCM备考13——性能优化

热门文章

  1. 计算机主机能上网玩游戏吗,为什么现在人人都有电脑,还要去网吧玩游戏?
  2. java implements的用法总结
  3. 安卓音乐播放器app开发(一)---功能分析及启动页的制作
  4. 4家运营商创建NFV MANO开源工作组
  5. vmware安装centos8网络配置并配置NAT子网(解决Unit network.service not found问题)
  6. 微信小程序没有找到可以构建的NPM包,请确认需要参与构建的npm在miniprogramroot目录
  7. PAT 1130 Infix Expression——什么才是DFS?由“柳神遍历”写法引发的思考
  8. C语言:优先级与运算符的介绍
  9. linux端口查看time_wait,netstat -an查看到大量的TIME_WAIT状态的解决办法
  10. 实时即未来,大数据项目车联网之原始数据实时ETL任务HBase调优【九】