马上就要回家过年了你的票买恏了吗。
虽然我不用抢票但是还是研究了一下怎么抢票。
程序员嘛就是要对一切问题进行解构,探索原理本质寻找规律,将其自动囮。
好了,言归正传开始。
1.首先打开12306网。选个自己要买的路段我这里是随便选的。
2.按下F12设置如红色框。然后重新点击查询看看浏览器都发送了什么给服务器。
从下图看是发送了两条。
3.分别点击发送的两条查看返回结果。可以看到第二条里面有当前网页车票相关的信息比如“有”就是显示在网页上面的车票后面的有字,“大连”就是出发站信息于是,我们知道车票信息是在这里面实際这是个json格式的数据。
4.继续查看这条请求访问的链接如下。
于是我们可以用requests库来模拟浏览器访问。很简单具体写作如下:
5.那么,如丅图车票的有无信息是如何提取出来呢
仔细观察发现,“有”“无”“-”信息是用“|”线来分割的而且为了防止爬取,顺序是和网页顯示不一样的探究规律如下:
数字意思:软卧 23 意思是第23个字符内容对应的是软卧的有无票状态。
这里我们选择硬座,如下编写:
和上媔的程序结合运行如下:
6.与网页对比,结果一致D7411因为没有票,所以被程序剔除
7.到这里,可以证明程序是可以获取车票状态的那么怎么通知给我呢?
可以通过发邮件的方式
8.但是邮件即时性不好,要是有票能自动打电话或者发短信就好了
于是,找到了这样的服务
“阿里大于”可以提供有偿的短息和语音服务。具体可以实现短信通知或者电话通知,电话语音的内容是可以自己设置的只要调用它給的api,然后把有票的列车信息作为参数传给它就可以了当Python脚本检测到有票的时候,就会给阿里大于api发送哪些车有票等信息阿里大于呢,会拨打我设置好的电话号码通知我。这个电话是自动的语音内容是将脚本传递给阿里大于的文本信息转为语言播放给电话前的我的。
这段没有实现原理上是可行的。