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相关推荐

  1. python 模拟浏览器selenium_Python使用Selenium模块模拟浏览器抓取斗鱼直播间信息示例...

    本文实例讲述了Python使用Selenium模块模拟浏览器抓取斗鱼直播间信息.分享给大家供大家参考,具体如下: import time from multiprocessing import Poo ...

  2. python采集直播间数据_Python使用Selenium模块模拟浏览器抓取斗鱼直播间信息示例...

    本文实例讲述了Python使用Selenium模块模拟浏览器抓取斗鱼直播间信息.分享给大家供大家参考,具体如下: import time from multiprocessing import Poo ...

  3. python爬虫登录12306失败_Python网络爬虫(selenium模拟登录12306网站)

    一.通过selenium自动登录12306官网 1.1 超级鹰打码平台API,创建chaojiyin.py文件 #!/usr/bin/env python#coding:utf-8 importreq ...

  4. selenium模拟登录12306

    利用selenium模拟登录12306,但是12306的登陆要想模拟还挺难的,需要先进行坐标识别,识别出来之后还要在进行滑块拖动验证识别,这里做一下记录. 这里的坐标识别是用的超级鹰,有时也会坐标识别 ...

  5. python使用selenium模块实现火车票的自动购买

    python使用selenium模块实现火车票的自动购买 python使用selenium模块实现火车票的自动购买 实现功能描述 直接撸代码 总结 实现功能描述 程序运行后会打开一个浏览器界面定义其尺 ...

  6. python中selenium模块驱动谷歌详解

    python中selenium模块驱动谷歌详解 Selenium的介绍.配置和调用 Selenium(浏览器自动化测试框架) 是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中 ...

  7. 利用python的selenium模块向Plant-mPLoc提交数据

    利用python的selenium模块向Plant-mPLoc提交数据 流程一般步骤 1.对数据的预处理 2. 环境的配置 3.代码分析及流程思想 回顾和展望 流程一般步骤   首先我们对得到的序列预 ...

  8. Python学习--Selenium模块

    1. Python学习--Selenium模块介绍(1) 2.Python学习--Selenium模块学习(2) 其他: 1. Python学习--打码平台 转载于:https://www.cnblo ...

  9. Python零基础之自动登录12306

    Python零基础之自动登录12306 文章目录 Python零基础之自动登录12306 需要注意的问题 直接上代码 分析过程在代码注释中已经写的较为清楚 功能实现是代码运行后打开生成的code2图片 ...

最新文章

  1. 51nod 1201:整数划分 超级好的DP题目
  2. 考公务员的本科学历可以考吗
  3. 论IP地址在数据库中应该用何种形式存储
  4. mysql5.7主从
  5. ECS 控制台诊断系统
  6. linux脚本使用scp自动传输,使用Shell脚本自动传输SCP文件
  7. js中函数参数值传递和引用传递
  8. 仿真文件的写法(以四位全加器为例)
  9. Python文件输入输出
  10. Effective C++: lambda表达式与闭包.
  11. Selenium电脑上怎么下载-Selenium下载和安装图文教程[超详细]
  12. java调用高德地图获取经纬度
  13. IT30:30岁IT男未来10年规划第1篇(2009-2020)
  14. python网络爬虫——自学笔记2.1用requests库和re库爬取图片
  15. GetLastError 错误代码
  16. 曾鸣分享:阿里集团及阿里眼里的电子商务(瑞士信贷中国投资年会)
  17. 打字游戏之主界面实现
  18. 张继群,创青春-数字经济赛道,中国创翼临沂市决赛,创客中国-中小企业创客比赛-临沂市决赛
  19. 《文法俱乐部》读书笔记之分词--LG二进制
  20. MATLAB文件操作

热门文章

  1. 粉刺黑头实际上就是黑头粉刺,是粉刺的一种类型,挤出后形如小虫,表面发黑。下面给大家带来除粉刺黑头的偏方,希望对大家有所帮助。
  2. 介绍计算机的英语作文,总算晓得写一篇介绍电脑的英语作文
  3. 模拟【CSP201609-3炉石传说】
  4. 《江城子·乙卯正月二十日夜记梦》古词鉴赏
  5. 枕上诗书-初入红尘,不知人间疾苦,
  6. 再揭国产COS操作系统的内幕
  7. 加权黑猩猩优化算法(WChOA)附Matlab代码
  8. Methods to Control Your Own Feelings One
  9. 求圆形矩形面积java_Java求矩形面积和圆形面积的异常处理实例
  10. Linux 基础之虚拟机创建与系统安装