社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

100行Python代码自动抢火车票!

马哥Linux运维 • 7 年前 • 695 次点击  

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


准备工具:

  • 12306网站用户名和密码

  • Python 2.7

  • chrome浏览器及下载chromedriver

  • 下载Python代码,位于:https://github.com/ppy2790/tickets


代码用的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,找到控件填充值:


找到用户名密码控件名


找到起始地控件名


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

cookie中起始地的值


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


查询车票代码:


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


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


抢票进行中


抢票成功!

作者:然学科技

来源:https://www.jianshu.com/p/a16b0b258c3b




————近期开班————

马哥联合BAT、豆瓣等一线互联网Python开发达人,根据目前企业需求的Python开发人才进行了深度定制,加入了大量一线互联网公司:大众点评、饿了么、腾讯等生产环境真是项目,课程由浅入深,从Python基础到Python高级,让你融汇贯通Python基础理论,手把手教学让你具备Python自动化开发需要的前端界面开发、Web框架、大监控系统、CMDB系统、认证堡垒机、自动化流程平台六大实战能力,让你从0开始蜕变成Hold住年薪20万的Python自动化开发人才

10期面授班:2018年03月05号(北京)

09期网络班:腾讯课堂随到随学网络

扫描二维码领取学习资料

更多Python好文请点击【阅读原文】哦

↓↓↓


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/gkwvLYM8Tj
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/5297
 
695 次点击