今年你不妨自己写一段代码来抢回家的火车票,是不是很Cool。

先准备好:

1)12306网站用户名和密码

2)chrome浏览器及下载chromedriver

3)下载Python代码

代码用的Python+Splinter开发,Splinter是一个使用Python开发的开源Web应用测试工具,它可以帮你实现自动浏览站点和与其进行交互。Splinter官网

http://splinter.readthedocs.io/en/latest/。Splinter执行的时候会自动打开你指定的浏览器,访问指定的URL。然后你所开发的模拟的任何行为,都会自动完成,你只需要坐在电脑面前,像看电影一样看着屏幕上各种动作自动完成然后收集结果即可。

了解原理:

找到相应URL,找到控件模拟登录、查询、订票操作。关键是找到控件名称,难点是起始地不是直接输入的页面值,需要在cookie中查出。

12306查询URL: https://kyfw.12306.cn/otn/leftTicket/init

12306登录URL: https://kyfw.12306.cn/otn/login/init

我的12306URL: https://kyfw.12306.cn/otn/index/initMy12306

购票确认URL: https://kyfw.12306.cn/otn/confirmPassenger/initDc

Python代码打开URL,找到控件填充值:

def login(self):

self.driver.visit(self.login_url)

# 填充用户名

self.driver.fill("loginUserDTO.user_name", self.username)

# 填充密码

self.driver.fill("userDTO.password", self.passwd)

print u"等待验证码,自行输入..."

找到用户名密码控件名

找到起始地控件名

确定起始地的值,方法Chrome浏览器中的“检查”功能(按F12),Network —> Cookies中找到:

cookie中起始地的值

拷贝起始地的cookie值,我把几个常用的城市拷出来,放到了字典中:

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'}

查询车票代码:

print u"购票页面开始..."

# 加载查询信息

self.driver.cookies.add({"_jc_save_fromStation": self.starts})

self.driver.cookies.add({"_jc_save_toStation": self.ends})

self.driver.cookies.add({"_jc_save_fromDate": self.dtime})

self.driver.find_by_text(u"查询").click()

其实,你只需要运行代码:

python tickets.py 上海 广州 2018-02-05

当然,还需要手动点一下的还是万恶的12306验证码,抢到票后确认支付就行啦。

抢票进行中

抢票成功!

快来试试吧~

python编程100行_自己动手写100行Python代码抢火车票!相关推荐

  1. python编程资料包_强力推荐,非常全的Python编程400集学习资料(今日限免)

    因为大数据和 AI,Python 一跃成为最火的语言,这里推荐几本畅销排行榜上的好书. 有需要在我的哔哩哔哩账号,私信我,"资料,即可免费领取. 一.Python基础教程 <图灵程序设 ...

  2. 经典仿句100例_精美仿写100例

    1 .太阳 无语 ,却放射出光辉:高山无语,却体现出巍峨. 蓝天无语,却显露出高远:大地无语,却展示出广搏. 鲜花无语,却散发出芬芳:青春无语,却散发出活力. 2 .假如 生命 是一株小草,我愿为春天 ...

  3. 南开大学python编程基础_[南开大学]20春学期《Python编程基础》在线作业(答案100分)...

    [奥鹏]-[南开大学]20春学期(1709.1803.1809.1903.1909.2003)<Python编程基础>在线作业 试卷总分:100    得分:100 第1题,已知" ...

  4. python编程快速上手_给Python小白推荐的40本入门书籍,帮你快速上手

    喜欢编程,热爱分享,希望能结交更多志同道合的朋友,一起在学习Python的道路上走得更远!有不懂的问题可以私聊我哦! 最近,小编的 Python 交流裙里进来了几位比较特殊的同学:一位初三的以编程为兴 ...

  5. Python编程新手看过来,如何求素数 (Python学习教程)

    本期的Python学习教程是针对新入门Python编程的新手来写的:关于怎么求素数! 一.什么是素数? 素数就是质数,通俗点说就是只能被1和其本身整数的数就是素数(1除外) 举个例子: 2,3,4,5 ...

  6. Python代写CSSE1001/7030 python程序作业、代做python CSSE1001/7030程序作业、 代写CSSE1001/7030 python 作业...

    Python代写CSSE1001/7030 python程序作业.代做python CSSE1001/7030程序作业. 代写CSSE1001/7030 python 作业 Uno++ Assignm ...

  7. Python编程,使用turtle画出漂亮的雪花--完整代码绘画实现洁白的雪绒花~~

    Python编程,使用turtle画出漂亮的雪花--完整代码实现洁白的雪绒花~~ Python中turtle库,可以方便的让你实现各种各样的功能.简单易用,有的时候能够创作出,你想像不到的漂亮图案.今 ...

  8. python编程手机游戏_有哪些python写的游戏

    展开全部 python编程32313133353236313431303231363533e59b9ee7ad9431333433646531游戏有哪些?下面给大家介绍几款由Python开发的游戏: ...

  9. python编程第一程序_第一个Python程序_Python编程开发教程

    第一个Python程序 用notepad++编写程序代码 语言设置为python(高量显示函数和关键字)(注意:行首不能有空格,Python对缩进要求严格) 命令提示符运行 cd \文件名 #打开py ...

最新文章

  1. 【剑指offer-Java版】15链表中倒数第K个结点
  2. C# 派生类的XmlSerializer序列化XML
  3. sublime xdebug调试php
  4. 他从零开始学Python,25岁拥有480000粉丝:成功就靠这3点!
  5. java处理图像库函数_图象处理详解-Java架构师必看
  6. windows下搭建hadoop+eclipse开发环境
  7. Spring MVC 教程,快速入门,深入分析【转】
  8. 对996最客观的描述,一叶知秋
  9. 湖南师大计算机学信网,湖南师范大学有计算机专业硕士吗?
  10. CSS隐藏内容的三种方法比较
  11. api php usdt 以太坊_以太坊PHP离线交易开发包
  12. CAD常用字体库大全
  13. 马拉车算法(不懂问我)
  14. 【目标检测】(13) 先验框解码,调整预测框,附TensorFlow完整代码
  15. java时区_Java时区的转换
  16. wps2016向程序发送命令_「向程序发送命令时出现问题」打开Word提示向程序发送命令时出现问题怎么办? - seo实验室...
  17. 与非门如何变成非门,与门,异或门
  18. 基于sklearn实现Bagging算法(python)
  19. 深入理解 Plasma(四)Plasma Cash
  20. SharpDevelop源码分析之插件

热门文章

  1. 字符串格式化漏洞修改GOT表一例
  2. C/C++编写的反向SHELL
  3. 重点解读《数据安全法》,做数据安全相关工作的必看
  4. 无线网络渗透测试-使用Wifite破解无线网络
  5. glibc-2.23学习笔记(一)—— malloc部分源码分析
  6. 6、(二进制类型)BIT、BINARY、VARBINARY、BLOB
  7. 计算字符串的实际长度
  8. Acwing第 16 场周赛【未完结】
  9. 4.1.2 文件的逻辑结构
  10. python进程监控并重启