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定位到滑块,用 ...
最新文章
- vb中的webrowser无法进行滑块验证_专题63 验证动量守恒定律
- 你以为没有CAD的前辈们画不出复杂的图纸?
- .net html5页面缓存,详解HTML5中的manifest缓存使用
- oracle scn与数据恢复,[Oracle] SCN与数据恢复的关系
- html引入vue不兼容ie11,关于vue.js:iview按需引入ie11不兼容报无效字符问题解决
- 新在互站上的校园跑腿/校园任务平台源码
- eclipse error
- linux终端python自动提示
- ORA-00911错误及解决方法(另附所有ora错误原因及解决方法 网址)
- mysql怎么添加默认约束_分享知识-快乐自己:MySQL中的约束,添加约束,删除约束,以及一些其他修饰...
- java 中的事物怎么配置_java – 在hibernate中如何以编程方式设置事务的隔离级别,或者如何创建具有不同隔离级别的两个事务...
- [PyTorch] torchvision库及其常用的函数
- 数据分析最难的就是怎样读懂数据!
- PythonHDF5目录
- SpringBoot读取自定义配置文件
- VSLAM算法(二):PnP求解 3D-2D 相机位姿及 BA优化算法
- “秃“如其来的植发经济是一门好生意吗?
- 466. 统计重复个数
- wstmart系统研究日志二
- C#读取Excel文件
热门文章
- LeetCode - 929 - 独特的电子邮件地址(unique-email-addresses)
- Excel字符串截取函数
- 新纪元出纳专用软件 v5.5 绿色
- unity md5加密
- 华为手机sd卡的根目录在哪_华为手机那么多系列,到底应该怎么选?哪一款更值得买?...
- 绘制一个五角星和六角形
- C 语言编译器 gcc 命令详解
- c/c++: bss data 段
- 域控ntp服务器配置,Win1216域控设置NTP服务器
- 解决Chrome浏览器检测不到HTCVIVE设备导致Three.js案例显示VR NOT SUPPORTED的问题