selenium模拟国航滑块验证码
本文就是大致讲解下使用selenium进行这个滑块验证码的拖动问题。
临时起意,看到了中国国际航空公司的官网,想试着采集下航班信息,发现官网是有不少难度的,操作也比较麻烦。
于是就用 fiddler 找了下国航的app接口。https://m.airchina.com.cn/ac/
于是我就直接开始采用selenium来进行页面信息采集。
我们要请求的接口是: https://m.airchina.com.cn/ac/c/invoke/qryFlights@pg
访问过去就是下图这个页面了。
当我们输入完出发地址和到达地址之后,点击查询,如图所示:
下面我们先用代码完成上述操作:
from selenium import webdriver
import time
driver = webdriver.Chrome(executable_path=r'C:\Users\lenovo\Desktop\chromedriver_win32\chromedriver.exe')
driver.get('https://m.airchina.com.cn/ac/c/invoke/qryFlights@pg')driver.find_element_by_id('orgCity').click() #点击出发输入框
time.sleep(1)
driver.find_element_by_xpath(r'//*[@id="airport"]').send_keys('PEK') #发送出发城市
time.sleep(2)
driver.find_element_by_class_name('citys').click() #点击确认输入的城市
time.sleep(2)
driver.find_element_by_id('dstCity').click() #点击到达输入框
time.sleep(2)
driver.find_element_by_id('airport').send_keys('CTU') #确认到达城市
time.sleep(2)
driver.find_element_by_class_name('citys').click() #点击确认到达的城市
time.sleep(2)
driver.find_element_by_id('subbtn').click() #点击查询
time.sleep(3)
下面就开始核心内容了:
首先需要导入我们ActionChains
from selenium.webdriver import ActionChains
Action Chains类常用于模拟鼠标的行为,比如单击,双击,拖拽等行为
首先需要实例化,然后调用其中的方法,完成相应的操作。
action = ActionChains(driver)
点击滑块并进行拖动:
action.click_and_hold(self, on_element=None).perform()action.move_by_offset(self, xoffset, yoffset).perform()
清楚鼠标痕迹:
action.reset_actions()
方法其实很简单。
from selenium.webdriver import ActionChains
try:huakuai_id = driver.find_element_by_id('dx_captcha_basic_box_1')if huakuai_id:flag = 0try:while True:for i in [111,148,150,165,215]: #图像缺口位置暂时人为给出time.sleep(1)huakuai = driver.find_element_by_id('dx_captcha_basic_slider-img-normal_1') #获取滑块action = ActionChains(driver) #实例化ActionChainsaction.click_and_hold(huakuai).perform() #点击滑块action.reset_actions() action.move_by_offset(int(i),0).perform() #拖动time.sleep(0.7) driver.find_element_by_class_name('captcha-bg').click() #点击空白time.sleep(0.7)# action.reset_actions()if not huakuai_id:flag = 1breakif flag == 1:breakexcept:pass
except:pass
time.sleep(3)
doc = driver.page_source
print(doc)
我用python的moviepy做的gif 图片有点大,分开来发为…
=。=
完整代码:
from selenium import webdriver
import time
driver = webdriver.Chrome(executable_path=r'C:\Users\lenovo\Desktop\chromedriver_win32\chromedriver.exe')
driver.get('https://m.airchina.com.cn/ac/c/invoke/qryFlights@pg')driver.find_element_by_id('orgCity').click()
time.sleep(1)driver.find_element_by_xpath(r'//*[@id="airport"]').send_keys('PEK')
time.sleep(2)
driver.find_element_by_class_name('citys').click()
time.sleep(2)
driver.find_element_by_id('dstCity').click()
time.sleep(2)
driver.find_element_by_id('airport').send_keys('CTU')
time.sleep(2)
driver.find_element_by_class_name('citys').click()
time.sleep(2)
driver.find_element_by_id('subbtn').click()
time.sleep(3)
from selenium.webdriver import ActionChains
try:huakuai_id = driver.find_element_by_id('dx_captcha_basic_box_1')if huakuai_id:flag = 0try:while True:for i in [111,148,150,165,215]:time.sleep(1)huakuai = driver.find_element_by_id('dx_captcha_basic_slider-img-normal_1')action = ActionChains(driver)action.click_and_hold(huakuai).perform()action.reset_actions()action.move_by_offset(int(i),0).perform()time.sleep(0.7)driver.find_element_by_class_name('captcha-bg').click()time.sleep(0.7)# action.reset_actions()if not huakuai_id:flag = 1breakif flag == 1:breakexcept:pass
except:pass
time.sleep(3)
doc = driver.page_source
print(doc)
selenium模拟国航滑块验证码相关推荐
- Python + selenium自动化工具 + 滑块验证码+点选验证码,实现模拟登录“中国铁路网12306”
文章目录 一.模拟登录"中国铁路网12306 1.引入库 2.初始化 3.将点选验证码图片,通过人工打码,返回目标像素位置(json格式). 4.点选验证码位置得到后,需要鼠标左击进行模拟人 ...
- selenium处理各类滑块验证码
selenium处理各类滑块验证码 滑动验证码 案例展示 实现 滑块拼图验证码 案例展示 实现 滑块拼图验证码(Canvas) 案例展示 实现 滑动验证码 案例展示 这种只要用鼠标点击并移动指定距离就 ...
- 最新突破“淘宝”登录接口方法,隐藏selenium,攻克滑块验证码
今日因为工作需要,需要抓取淘宝上一些商品详情信息,而商品详情信息必须要在登陆以后才能进行访问,所以想要抓取商品信息,模拟登陆是第一个必须要解决的问题. 淘宝的模拟登陆说难也不难,说不难,也蛮多坑的.今 ...
- python 滑块验证码_python selenium 淘宝滑块验证码 问题
正常打开淘宝等页面,搜索商品和滑块验证码是没有问题的,但是用selenium打开,在多次翻页后出现的滑块验证码就总是失败,无论是手动滑还是代码控制都不可以,目前正在找解决办法... 此问题针对多次翻页 ...
- python 淘宝滑块验证_python selenium 淘宝滑块验证码 问题
正常打开淘宝等页面,搜索商品和滑块验证码是没有问题的,但是用selenium打开,在多次翻页后出现的滑块验证码就总是失败,无论是手动滑还是代码控制都不可以,目前正在找解决办法... 此问题针对多次翻页 ...
- selenium模拟登陆截取验证码
向百度大大下手吧... 大致思路 1.打开chrome 2.进入百度 3.点击登录 4.切换账号密码登录 5.尝试获取验证码截图(密码输错三次就可以出现验证码了) GKD from selenium ...
- selenium模拟geetest极验滑动验证
前言 前一阵子打球认识了一个小学生,为了骗他钱,吹了好半天,什么盗取心上人的QQ密码,吃鸡外挂,学校饭卡无限充值,最终达成交易10块钱帮他刷QQ赞. 回家赶快百度研究了一下,原来刷赞很简单:很多网站都 ...
- selenium模拟登录示例
案例1 登录B站 开发语言:Python3.6.5 框架: selenium自动化测试工具+Chrome浏览器 PIL图形处理库 实现逻辑: 使用selenium驱动Chrome浏览器,访问登录首页, ...
- python爬虫进阶-滑块验证码破解(bilibili)
目标 如下图,利用selenium模拟拖动滑块完成验证 关键问题 我们知道selenium可以定位到用户名和密码,用send_keys可以实现输入账号密码.同样我们可以用selenium定位到滑块,用 ...
最新文章
- 用Python统计分析290种零食,谁能唤起80、90后的童年回忆?
- Windows Azure Mobile Services增加了对 Android的支持并扩展其适用范围至东亚地区
- VC++ 打开文件夹,保存文件等对话框的调用
- mysql 主从同步检查_MySQL主从复制一致性检测
- android -------- java虚拟机和Dalvik虚拟机
- JavaScript 里变量名前面加了大括号代表什么含义
- how2java_HOW TO:构造Java类的原型
- 英语中十二个月名称的由来
- Hibernate 语句总结
- 【BZOJ 3294】 3294: [Cqoi2011]放棋子 (DP+组合数学+容斥原理)
- gitHub报错10054、443解决办法
- 计算机基础网络空间安全,网络空间安全学院“首届计算机基础知识竞赛”圆满结束...
- 漫谈CRM体系化建设2 – 如何开发客户?
- 精选“数据分析”好问题汇总·第一期
- 国内APP消息推送机制以及微信消息延迟问题剖析
- 中国石油大学《物理化学》第三阶段在线作业
- 【Web】1326- 深入浅出 Web Audio API
- WINDOWS系统“资源管理器”进程选项关闭之后的解决方法
- 什么是根服务器?我国的根服务器发展如何?
- android5.0刷机,一加手机怎么升级安卓5.0 一加手机刷Android 5.0教程
热门文章
- java同学录_JSP同学录(jsp+javabean)
- Tomcat9启动闪退
- 2021全新出发!最新笔记汇总,量变导致质变,坚持记录!
- 轻JS逆向分析“攒经验”项目之某交易所Sign加密参数逆向分析
- linux network service not found,我自己调出来的,还有小学弟的帮忙。哈哈
- 三菱工控板底层源码_FX2N-20MT仿三菱PLC 国产PLC PLC板 PLC工控板 单片机控制板
- 基于TensorFlow的花卉识别
- 使用django实现某淘客网站采集功能
- 工具 好用的一些windows工具,包括git、录屏、ps、navicat等等,后续会持续更新
- php不能tmp,“c:\xAMPP\tMP\PHPE189.tMP”文件不存在或不可读。拉瓦维尔6