程序员的我是如何抢票的(Python)

article/2025/8/22 11:04:29

马上就要回家过年了,你的票买好了吗。

虽然我不用抢票,但是还是研究了一下怎么抢票。

程序员嘛,就是要对一切问题进行解构,探索原理本质,寻找规律,将其自动化。。。

好了,言归正传,开始。

1.首先,打开12306网。选个自己要买的路段,我这里是随便选的。

然后点击查询。

2.按下F12,设置如红色框。然后重新点击查询,看看浏览器都发送了什么给服务器。

从下图看,是发送了两条。

3.分别点击发送的两条,查看返回结果。可以看到第二条里面有当前网页车票相关的信息。比如“有”就是显示在网页上面的车票后面的有字,“大连”就是出发站信息。于是,我们知道车票信息是在这里面。实际这是个json格式的数据。


4.继续查看这条请求访问的链接。如下。

于是,我们可以用requests库来模拟浏览器访问。很简单,具体写作如下:

5.那么,如下图车票的有无信息是如何提取出来呢?

仔细观察发现,“有”“无”“-”信息是用“|”线来分割的。而且为了防止爬取,顺序是和网页显示不一样的。探究规律如下:

数字意思:软卧 23 意思是第23个字符内容对应的是软卧的有无票状态。

'''
无座 26
软卧 23
硬座 29
硬卧 28
特等商务座 32
一等座 31
二等座 30
'''

这里,我们选择硬座,如下编写:

和上面的程序结合,运行如下:

6.与网页对比,结果一致。D7411因为没有票,所以被程序剔除。

7.到这里,可以证明程序是可以获取车票状态的。那么怎么通知给我呢?

可以通过发邮件的方式。

8.但是邮件即时性不好,要是有票能自动打电话或者发短信就好了。

于是,找到了这样的服务。

阿里大于”可以提供有偿的短息和语音服务。具体可以实现短信通知,或者电话通知,电话语音的内容是可以自己设置的。只要调用它给的api,然后把有票的列车信息作为参数传给它就可以了。当Python脚本检测到有票的时候,就会给阿里大于api发送哪些车有票等信息。阿里大于呢,会拨打我设置好的电话号码,通知我。这个电话是自动的,语音内容是将脚本传递给阿里大于的文本信息转为语言播放给电话前的我的。

这段没有实现,原理上是可行的。










http://chatgpt.dhexx.cn/article/eiUHv78V.shtml

相关文章

12306 抢票系列之只要搞定RAIL_DEVICEID的来源,从此抢票不再掉线(上)

郑重声明: 本文仅供学习使用,禁止用于非法用途,否则后果自负,如有侵权,烦请告知删除,谢谢合作! 开篇明义 本文针对自主开发的抢票脚本在抢票过程中常常遇到的请求无效等问题,简单分析了 12306 网站的前端加密算法,更准确的说,是探究 RAIL_DEVICEID 的生成过程. 因为该 cookie…

技术宅---我的网上抢火车票攻略

写在前面 写这篇文章的起因是今天在12306上买火车票时,被这牛逼的网站给震撼到了,靠,牛叉得让人无语的用户体验啊。就讲讲我是如何利用一个小工具做辅助,幸运地抢到了回家的卧铺票的。希望能给有需要的兄弟们做个参考。 回顾下我今…

初学者怎么学java编程 ,小白们看过来吧

推荐一个java《学习》交流 群523401738每天晚上都有一个Java技术学习课,会有老师分享干货,帮助大家分析解答问题 一、java分为三大方向: CS架构(java se)。BS架构(java web)。java手机开发(java me&#…

自学 Java 怎么入门?

自学会碰到的问题 自学可以省不少的钱, 可是自学会碰到很多问题。 我再自学的过程中找到了一个Java自学的网站(Java全栈工程师 | 以实例驱动学习 | how2j.cn),试图解决一些自学中会碰到的问题。 1. 框架、思路、原理 一下子涌进来太多,弄不明…

Java 技术新手入门

Java 技术新手入门 什么是 Java 技术?Java 技术为什么重要?什么是 Java 组件技术?Java 技术如何与 Web 服务联系起来?如何提高 Java 编程技巧?Java 编程人员可以使用哪些 IBM 工具和产品? developerWorks J…

java基础编程入门教程,2022最新

Java学习到什么程度可以找第一份工作自己买了本Java从入门到精通。以为可以很快地学完,非CS专业。现在我想说所有系列的从入门到精通都是垃圾,一年多来,我每天白天看视频,晚上敲代码到凌晨,我是一个很倔的人,我认为天下没有任何东西是人类学不会的,所以我就付出高三一样的时间去…

新手小白入门编程第3讲 JAVA入门案例

1 HelloWorld案例 1.1 工作空间设置 工作空间就是一个文件夹,用来保存我们所有的开发文件和代码等等. 工作空间也是可以切换的,但是切换了工作空间,我们对于eclipse的设置就重置了. 后续我们自己写的代码可以去这个位置找到.可以如下图,选择工作空间的存放目录 1.2 eclipse…

Java编程学习入门、Java语言学习、Java入门必看

一、初识Java 1.生活中的程序: 从起床到教室上课的过程 穿衣打扮》起床》洗漱》出宿舍》》吃早餐》到教室 按照特定的顺序去完成某一件事的过程我们叫做生活中的程序 2.计算机中的程序: 一组有序指令的集合,需要和计算机交流就要使用计算机语言,ja…

关于1970年之前的时间要怎么转换成时间戳啊 负数要怎么处理

在这里有的人可能有疑问? 大家都知道java时间戳是从1970年1月1日0时0分0秒开始计算的,那么假如1960年的时间戳应该是多少呢? 下面是答案,负数,通过负数一样可以转化成正常的时间 年月日。 -3026880001960-05-30 00:00

moment.JS时间戳转换总是1970年问题

把时间戳 ✖1000 即可解决 例子moment(date * 1000).format(‘YYYY-MM-DD’); 还可以这样

mysql查询1970年以后出生的人_阴阳五行分析:1970年出生的人是什么命?

农历1970年出生的人属狗,此年出生的人不应好高骛远,把握当下幸福的生活。我们常说“听天由命”,所谓的命运早就已经刻画在了你的五行中,五行算命也就有迹可循。 那么,本期一起来看看1970年出生的人是什么命&#xff1f…

mysql 日期 1970_Mysql中处理1970年前的日期(unixtime为负数的情况)负数时间戳格式化...

客户扔过来一个bug,说是一个系统中对42岁以上的人的统计不正确,而41岁以下的人没有问题。眼睛瞟了一下托盘区里的日期,2012年3月26日,嗯,今年42岁的话,那么应该就是出生在1970年左右,马上就把问…

C语言里的fabs()和sqrt()的含义

fabs()其实是指绝对值&#xff0c;例如fabs(a)就是指a的绝对值&#xff0c;在程序中使用的时候需要包含头文件<math.h>。而sqrt()是指开根号&#xff0c;例如sqrt(a)就是指根号a。 举个例子&#xff1a; 假如从键盘任意输入a&#xff0c;b&#xff0c;e的值&#xff0c;编…

求绝对值指针c语言,C语言实现abs和fabs绝对值

C语言 abs() 函数用于求整数的绝对值。 头文件&#xff1a;math.h 或者 stdlib.h 语法/原型&#xff1a; int abs(int n); n 表示要求绝对值的数。 返回值&#xff1a;参数的绝对值。 【实例1】使用 abs() 函数求整数 3 和 -4 的绝对值。 #include #include int main() { int a…

c语言中fabs是什么意思,c语言fabs是什么意思_后端开发

C语言sqrt函数的用法_后端开发 C语言中sqrt函数用于计算一个非负实数的平方根&#xff0c;使用时需要在头部引入math.h文件&#xff0c;用法示例&#xff1a;sqrt(25)&#xff0c;程序将返回5。 c语言fabs是什么意思&#xff1f; fabs函数是一个求绝对值的函数&#xff0c;求出…

c语言中fabs是什么意思,c语言fabs是什么意思

c语言fabs是什么意思&#xff1f; fabs函数是一个求绝对值的函数&#xff0c;求出x的绝对值&#xff0c;和数学上的概念相同&#xff0c;函数原型是extern float fabs(float x)&#xff0c;用法是#include 。 推荐学习&#xff1a;c语言视频教程 fabs()函数的声明&#xff1a;d…

c语言fabs函数的返回值,fabs()函数

fabs函数是一个求绝对值的函数&#xff0c;求出x的绝对值&#xff0c;和数学上的概念相同&#xff0c;函数原型是extern float fabs(float x)&#xff0c;用法是#include 。 C语言中fabs()函数&#xff1a; (1)描述&#xff1a;C库函数double fabs(double x) &#xff0c;返回浮…

CSS overflow 属性(琐碎知识点整理)

本文详细的介绍了 CSS overflow 属性的 ‘定义和用法’ ‘属性效果’ 废话不多说, 直接上代码以及图例 (为了让大家方便阅读, 都有自己验证过程的一些图片作为分享) 。 一. overflow 定义和用法: 1. overflow 属性规定当内容溢出元素框时发生的事情 。2. 这个属性定义溢出元…

CSS 处理溢出 overflow属性

在CSS中&#xff0c;如果设置了一个盒子的宽度与高度&#xff0c;则盒子中的内容就可能超过盒子本身的宽度或高度。此时&#xff0c;可以使用 overflow 属性来控制内容溢出时的处理方式。 overflow属性的可选值有 visible | hidden | scroll | auto&#xff0c;除了body 和 te…

text-overflow属性的使用

text-overflow属性的使用 text-overflow属性规定了当文本溢出包含元素时所发生的事情。 取值&#xff1a; 当遇到标题过长&#xff0c;影响页面效果的情况时&#xff0c;text-overflow属性发挥它的作用&#xff0c;如下图所示&#xff1a; 重点&#xff1a; 利用text-overflo…