Python使用selenium模块模拟登录12306
selenium模块概述
selenium模块是基于浏览器自动化的一个模块。换句话说使用selenium可以让浏览器根据自己写的代码自动运行。
相应的语法
·编写基于浏览器自动化的操作代码
· 发起请求:get(url)
· 标签定位:find系列的方法
· 标签交互:send_ keys( 'xxx')
· 执行js程序:excute _script( 'jsCode ')一前进,后退:back() ,forward()
· 关闭浏览器:quit()
这里就不赘述selenium模块的安装了。
登录的具体流程
总体思路:
· 使用selenium向12306网站发起请求,打开登陆页面
· 根据标签的id值定位到用户账号框、用户密码框以及登录按钮
· 填入账号密码后,点击登录按钮
· 进行滑块验证
· 登陆成功
# 根据id获取用户账号输入框、密码输入框
username_tag = driver.find_element_by_id('J-userName')
password_tag = driver.find_element_by_id('J-password')
# 填入自己的账号和密码
username_tag.send_keys('xxxxxxx')
time.sleep(1)
password_tag.send_keys('xxxxxxxx')
# 根据id获取登录按钮
login_btn = driver.find_element_by_id('J-login')
# 点击登录按钮
login_btn.click()
再点击登录按钮后,12306服务器会弹出滑块验证的窗口,需要我们使用代码模拟浏览器点击滑动完成验证。这里我们使用动作链来完成一系列操作:点击并长按,向指定方向拖拽一定的距离。
动作链使用
这里我们在介绍下动作链的使用,使用动作链非常简单。
1、导入相应的模块from selenium.webdriver import ActionChains
2、用构造方法获取动作链对象
# 定义动作链,点击并拖拽
aco = ActionChains(driver)# 点击并长按aco.click_and_hold(span)# 位移指定的距离aco.move_by_offset(25,0).perform()
注意:想让动作链执行相应的操作必须调用.perform()方法。
完成验证码滑块的拖动
# 定义动作链,点击并拖拽
aco = ActionChains(driver)# 点击并长按aco.click_and_hold(span)#perform()立即执行动作链操作for i in range(5):aco.move_by_offset(25,0).perform()time.sleep(0.3)# 释放动作链aco.release()
规避检测
由于12306会识别使用selenium模块的浏览器操作,为了规避相应的检测,我们还必须添加相应的代码。
from selenium.webdriver import ChromeOptionschrome_options = Options()chrome_options.add_argument("--disable-blink-features=AutomationControlled")driver = webdriver.Chrome(executable_path='你的chromedriver路径',chrome_options=chrome_options)
完整代码
from selenium import webdriverimport requestsfrom lxml import etreefrom selenium.webdriver import Chromefrom selenium.webdriver import ChromeOptionsfrom selenium.webdriver import ActionChainsimport time# 实现无可视化界面from selenium.webdriver.chrome.options import Optionschrome_options = Options()chrome_options.add_argument("--disable-blink-features=AutomationControlled")# 这里填入你自己的chromedriver的安装路径driver = webdriver.Chrome(executable_path='C:/Users/Declan/AppData/Local/Google/Chrome/Application/chromedriver',chrome_options=chrome_options)driver.get('https://kyfw.12306.cn/otn/resources/login.html')# 根据id获取用户账号输入框、密码输入框username_tag = driver.find_element_by_id('J-userName')password_tag = driver.find_element_by_id('J-password')# 填入自己的账号和密码username_tag.send_keys('xxxxxxxx')time.sleep(1)password_tag.send_keys('xxxxxx')# 根据id获取登录按钮login_btn = driver.find_element_by_id('J-login')# 点击登录按钮login_btn.click()# 这里必须得休眠,不然运行速度太夸,代码难以定位到滑块time.sleep(2)span = driver.find_element_by_css_selector('.btn_slide')# 定义动作链,点击并拖拽aco = ActionChains(driver)# 点击并长按aco.click_and_hold(span)#perform()立即执行动作链操作for i in range(5):aco.move_by_offset(25,0).perform()time.sleep(0.3)# 释放动作链aco.release()time.sleep(2)ok_btn = driver.find_element_by_css_selector('.ok')ok_btn.click()time.sleep(5)driver.quit()
Python使用selenium模块模拟登录12306相关推荐
- python 模拟浏览器selenium_Python使用Selenium模块模拟浏览器抓取斗鱼直播间信息示例...
本文实例讲述了Python使用Selenium模块模拟浏览器抓取斗鱼直播间信息.分享给大家供大家参考,具体如下: import time from multiprocessing import Poo ...
- python采集直播间数据_Python使用Selenium模块模拟浏览器抓取斗鱼直播间信息示例...
本文实例讲述了Python使用Selenium模块模拟浏览器抓取斗鱼直播间信息.分享给大家供大家参考,具体如下: import time from multiprocessing import Poo ...
- python爬虫登录12306失败_Python网络爬虫(selenium模拟登录12306网站)
一.通过selenium自动登录12306官网 1.1 超级鹰打码平台API,创建chaojiyin.py文件 #!/usr/bin/env python#coding:utf-8 importreq ...
- selenium模拟登录12306
利用selenium模拟登录12306,但是12306的登陆要想模拟还挺难的,需要先进行坐标识别,识别出来之后还要在进行滑块拖动验证识别,这里做一下记录. 这里的坐标识别是用的超级鹰,有时也会坐标识别 ...
- python使用selenium模块实现火车票的自动购买
python使用selenium模块实现火车票的自动购买 python使用selenium模块实现火车票的自动购买 实现功能描述 直接撸代码 总结 实现功能描述 程序运行后会打开一个浏览器界面定义其尺 ...
- python中selenium模块驱动谷歌详解
python中selenium模块驱动谷歌详解 Selenium的介绍.配置和调用 Selenium(浏览器自动化测试框架) 是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中 ...
- 利用python的selenium模块向Plant-mPLoc提交数据
利用python的selenium模块向Plant-mPLoc提交数据 流程一般步骤 1.对数据的预处理 2. 环境的配置 3.代码分析及流程思想 回顾和展望 流程一般步骤 首先我们对得到的序列预 ...
- Python学习--Selenium模块
1. Python学习--Selenium模块介绍(1) 2.Python学习--Selenium模块学习(2) 其他: 1. Python学习--打码平台 转载于:https://www.cnblo ...
- Python零基础之自动登录12306
Python零基础之自动登录12306 文章目录 Python零基础之自动登录12306 需要注意的问题 直接上代码 分析过程在代码注释中已经写的较为清楚 功能实现是代码运行后打开生成的code2图片 ...
最新文章
- 51nod 1201:整数划分 超级好的DP题目
- 考公务员的本科学历可以考吗
- 论IP地址在数据库中应该用何种形式存储
- mysql5.7主从
- ECS 控制台诊断系统
- linux脚本使用scp自动传输,使用Shell脚本自动传输SCP文件
- js中函数参数值传递和引用传递
- 仿真文件的写法(以四位全加器为例)
- Python文件输入输出
- Effective C++: lambda表达式与闭包.
- Selenium电脑上怎么下载-Selenium下载和安装图文教程[超详细]
- java调用高德地图获取经纬度
- IT30:30岁IT男未来10年规划第1篇(2009-2020)
- python网络爬虫——自学笔记2.1用requests库和re库爬取图片
- GetLastError 错误代码
- 曾鸣分享:阿里集团及阿里眼里的电子商务(瑞士信贷中国投资年会)
- 打字游戏之主界面实现
- 张继群,创青春-数字经济赛道,中国创翼临沂市决赛,创客中国-中小企业创客比赛-临沂市决赛
- 《文法俱乐部》读书笔记之分词--LG二进制
- MATLAB文件操作
热门文章
- 粉刺黑头实际上就是黑头粉刺,是粉刺的一种类型,挤出后形如小虫,表面发黑。下面给大家带来除粉刺黑头的偏方,希望对大家有所帮助。
- 介绍计算机的英语作文,总算晓得写一篇介绍电脑的英语作文
- 模拟【CSP201609-3炉石传说】
- 《江城子·乙卯正月二十日夜记梦》古词鉴赏
- 枕上诗书-初入红尘,不知人间疾苦,
- 再揭国产COS操作系统的内幕
- 加权黑猩猩优化算法(WChOA)附Matlab代码
- Methods to Control Your Own Feelings One
- 求圆形矩形面积java_Java求矩形面积和圆形面积的异常处理实例
- Linux 基础之虚拟机创建与系统安装