因:

想着那么多人,抢不到火车票。感觉到一丝感慨

所以有了抢火车票这个脚本。

0x01

思路:自动打开浏览器,自动输入账号密码

知道查看。自动预定。

0x02

要用到的模块

splinter模块:
pip install splinter
chrome驱动:
下载地址:http://chromedriver.storage.googleapis.com/index.html
查看自己的版本点开设置->点开关于Google chrome
版本对应:
chromedriver版本 支持的Chrome版本
v2.35 v62-64
v2.34 v61-63
v2.33 v60-62
v2.32 v59-61
v2.31 v58-60
v2.30 v58-60
v2.29 v56-58
v2.28 v55-57
v2.27 v54-56
v2.26 v53-55
v2.25 v53-55
v2.24 v52-54
v2.23 v51-53
v2.22 v49-52
v2.21 v46-50
v2.20 v43-48
v2.19 v43-47
v2.18 v43-46
v2.17 v42-43
v2.13 v42-45
v2.15 v40-43
v2.14 v39-42
v2.13 v38-41
v2.12 v36-40
v2.11 v36-40
v2.10 v33-36
v2.9 v31-34
v2.8 v30-33
v2.7 v30-33
v2.6 v29-32
v2.5 v29-32
v2.4 v29-32

  

将下载好的chrome驱动解随便解压到一个文件夹,然后添加进系统环境的path变量:

0x03

介绍splinter模块的用法

http://www.jb51.net/article/75992.htm

自己做的笔记:

0x04

代码分析

from splinter.browser import Browser
import time
b=Browser(driver_name="chrome")
b.visit("https://kyfw.12306.cn/otn/leftTicket/init")#浏览器打开12306的页面
bsd=b.find_by_id("login_user")#选择login的id
bsd.click()#点击
b.fill("loginUserDTO.user_name","自己的12306账号")#填写自己的username
b.fill("userDTO.password","自己12306的密码")#填写自己的password
print('[!]手动确认验证码')#验证码自己选择
time.sleep(10)#选择好验证码之后的10秒
b.find_by_id("loginSub").click()#自动点击登录按钮
time.sleep(3)#登录后等待三秒
b.visit("https://kyfw.12306.cn/otn/leftTicket/init")#打开12306的查询页面
b.cookies.add({"_jc_save_fromStation":"%u5E7F%u5DDE%2CGZQ"})#设置好出发点 我选择的是广东
b.cookies.add({"_jc_save_fromDate":"2018-1-23"})#日期
b.cookies.add({u'_jc_save_toStation':"%u6B66%u6C49%2CWHN"})#目的地 我选择的是武汉
b.cookies.all()
b.reload()
b.find_by_text(u"查询").click()#找到查询按钮并点击他
b.find_by_text(u"预订")[1].click()#找到第二班车点击预定按钮
time.sleep(5)#进去后等待5秒,勾选好乘坐人
b.find_by_text(u"提交订单").click()#点击提交订单
time.sleep(3)#等待3秒
b.find_by_text(u"确认").click()#点击确认按钮

  常用的几个城市:

cities= {'成都':'%u6210%u90FD%2CCDW',
'重庆':'%u91CD%u5E86%2CCQW',
'北京':'%u5317%u4EAC%2CBJP',
'广州':'%u5E7F%u5DDE%2CGZQ',
'杭州':'%u676D%u5DDE%2CHZH',
'宜昌':'%u5B9C%u660C%2CYCN',
'郑州':'%u90D1%u5DDE%2CZZF',
'深圳':'%u6DF1%u5733%2CSZQ',
'西安':'%u897F%u5B89%2CXAY',
'大连':'%u5927%u8FDE%2CDLT',
'武汉':'%u6B66%u6C49%2CWHN',
'上海':'%u4E0A%u6D77%2CSHH',
'南京':'%u5357%u4EAC%2CNJH',
'合肥':'%u5408%u80A5%2CHFH'}

要想知道更多请看文章:
作者:然学科技
链接:https://www.jianshu.com/p/a16b0b258c3b
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  几个号的抢火车票文章:

脚本之家:http://www.jb51.net/article/75992.htm
简书:https://www.jianshu.com/p/a16b0b258c3b

  抢票运行视频:加入qpython群观看:540717901

百度云视频:链接:https://pan.baidu.com/s/1smpRTOL 密码:gowj

python抢火车票的脚本的更多相关文章

  1. python抢火车票 短信通知

    # -*- coding: utf-8 -*- from splinter.browser import Browser from time import sleep import traceback ...

  2. Python用上锁和解锁 lock lock.acquire lock.release 模拟抢火车票

    Python用上锁和解锁  lock lock.acquire lock.release 模拟抢火车票 import jsonimport timefrom multiprocessing impor ...

  3. 用Python抢到回家的车票,so easy!

    “ 盼望着,盼望着,春节的脚步近了,然而,每年到这个时候,最难的,莫过于一张回家的火车票. ​ 据悉,今年春运期间,全国铁路发送旅客人次同比将增长 8.0%.达到 4.4 亿人次. ​ 2020 年铁 ...

  4. python 暴力破解密码脚本

    python 暴力破解密码脚本 以下,仅为个人测试代码,环境也是测试环境,暴力破解原理都是一样的, 假设要暴力破解登陆网站www.a.com 用户 testUser的密码, 首先,该网站登陆的验证要支 ...

  5. 一个好用的Python备份mysql的脚本

    前几天打算用Python写一个mysql脚本,上Google看了下老外写的,写的挺好的,原地址在http://tecadmin.net/python-script-for-mysql-database ...

  6. 用Python写的简单脚本更新本地hosts

    这两天Google墙得严重,于是就产生了做个一键更新hosts的脚本的想法. 由于正在学习Python,理所当然用Python来写这个脚本了. 接触比较多的就是urllib2这个库,习惯性的impor ...

  7. 现在都是python 单独开发框架 执行脚本,处理结果,发报告之类的

    现在都是python 单独开发框架 执行脚本,处理结果,发报告之类的

  8. 0003.5-20180422-自动化第四章-python基础学习笔记--脚本

    0003.5-20180422-自动化第四章-python基础学习笔记--脚本 1-shopping """ v = [ {"name": " ...

  9. Python 网站后台扫描脚本

    Python  网站后台扫描脚本 #!/usr/bin/python #coding=utf-8 import sys import urllib import time url = "ht ...

随机推荐

  1. Myeclipse Reload

    前言: 在用 myeclipse 做项目开发的时候.如果没有配置热部署,平凡的去启动 server 如果项目小,那么很简单.如果项目很大,那么重启的项目花费的时间会很长. 在 myeclipse 中其 ...

  2. 7.python常用模块

    1.time 常用表示时间方式: 时间戳,格式化的时间字符串,元组(struct_time) UTC(Coordinated Universal Time,世界协调时)亦即格林威治天文时间,世界标准时 ...

  3. SUID、SGID、Sticky BIT

    添加SUID: chmod 4755 可执行文件名 或 chmod u+s 可执行文件名 删除SUID: chmod 755 可执行文件名 或 chmod u-s 可执行文件名 [root@local ...

  4. Xamarin android CardView的使用详解

    android 5.0新增加的一个控件CardView,在support v7兼容包中,意思就是卡片View,虽然可以设置阴影,圆角等等样式,但是我们也可以自己写出来,谷歌工程师之所以出这个,肯定是帮 ...

  5. Xamarin Android自定义文本框

    xamarin android 自定义文本框简单的用法 关键点在于,监听EditText的内容变化,不同于java中文本内容变化去调用EditText.addTextChangedListener(m ...

  6. xamarin android alertdialog详解

    说明一下:学习xamarin android一段时间,准备写一些xamarin android相关的例子,alertdialog也是使用的非常多得空间之一,非常感谢鸟巢上的小猪,我也是看着他写的教程学 ...

  7. Linux发行版 CentOS6.5下删除分区操作

    本文地址http://comexchan.cnblogs.com/,作者Comex Chan,尊重知识产权,转载请注明出处,谢谢!   有时候,发现分区分错了.需要删除分区,只需按照分区的步骤逆向操作 ...

  8. Django2.0中文文档

    title: Django2.0中文文档 tags: Python,Django,入沐三分 grammar_cjkRuby: true --- Django2.0版本已经发布了,我们先来看一个图片 从 ...

  9. springCloud系列教程01:Eureka 注册中心集群搭建

    springCloud系列教程包含如下内容: springCloud系列教程01:Eureka 注册中心集群搭建 springCloud系列教程02:ConfigServer 配置中心server搭建 ...

  10. 【转】教你开发jQuery插件

    阅读目录 基本方法 支持链式调用 让插件接收参数 面向对象的插件开发 关于命名空间 关于变量定义及命名 压缩的好处 工具 GitHub Service Hook 原文:http://www.cnblo ...