Skip to content

OcenYu/12306

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

一个简单的抢票脚本

1、设计思路

如果我们要买一张火车票,我们会怎么做?打开12306,登陆,输入出发地和目的地,选择出行日期,然后点击查询,有余票的话就下单购买,没有票就点刷新或者等待一会再去看下,为了能抢到票,你时不时就得放下手头的工作,登陆12306看看有没有票。很枯燥很繁琐不是吗?因此我们希望写一个脚本来代替我们做这些事情。

脚本是一段程序,能够自动帮我们完成上述枯燥的工作,遗憾的是,这个脚本并不智能,无法像人一样识别复杂的图像、逻辑,它只会执行我们交待给它的事情(也就是一堆的if....else、while),因此我们不得不打开浏览器,分析下构成一个页面的元素(html标签,css,JavaScript),而这些元素才是脚本能够识别的,我们用脚本来解析这些元素,判断这是否是我们想要的数据,从而决定是否进入下一步。

幸好,有很多对开发者友好的浏览器可以帮助我们分析一个网页。打开Firefox浏览器,进入12306官网,点击鼠标右键->“查看元素”,弹出的控制台包含很多功能,左上角的箭头可以选取页面元素,“查看器”可以查看网页元素,“控制台”可以调试JavaScript脚本,“网络”可以对网络通信进行抓包,看一看访问一个网页都加载了哪些资源。通过分析12306的页面,确定哪些信息是我们需要的(车次、出发时间、余票信息),以及确定下单时提交的表单。

2、工具准备

  • 开发环境为win10
  • 在windows中安装python3.6.8,并且将python的可执行文件所在目录添加到环境变量。
  • 用pip安装selenium库
  • 下载Firefox的webdriver,并且将可执行文件所在目录添加到环境变量。
  • 用pip安装playsound库

3、代码组织

  • 12306.py 入口文件
  • funcs12306.py 辅助函数文件

4、运行

命令行输入python 12306.py

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%