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

简介: 马上就要回家过年了,你的票买好了吗。虽然我不用抢票,但是还是研究了一下怎么抢票。程序员嘛,就是要对一切问题进行解构,探索原理本质,寻找规律,将其自动化。

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

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

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

好了,言归正传,开始。

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发送哪些车有票等信息。阿里大于呢,会拨打我设置好的电话号码,通知我。这个电话是自动的,语音内容是将脚本传递给阿里大于的文本信息转为语言播放给电话前的我的。

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









相关文章
|
27天前
|
缓存 监控 程序员
Python中的装饰器是一种特殊类型的声明,它允许程序员在不修改原有函数或类代码的基础上,通过在函数定义前添加额外的逻辑来增强或修改其行为。
【6月更文挑战第30天】Python装饰器是无侵入性地增强函数行为的工具,它们是接收函数并返回新函数的可调用对象。通过`@decorator`语法,可以在不修改原函数代码的情况下,添加如日志、性能监控等功能。装饰器促进代码复用、模块化,并保持源代码整洁。例如,`timer_decorator`能测量函数运行时间,展示其灵活性。
21 0
|
18天前
|
存储 大数据 程序员
逆袭吧,程序员!Python堆与优先队列的使用秘籍,助你轻松解决复杂问题!
【7月更文挑战第9天】Python的堆和优先队列是高效工具,对比列表在删除最小元素时的O(n)复杂度,堆提供O(log n)操作。优先队列利用堆数据结构,按优先级处理元素,而非FIFO。示例中,heapq模odule创建最小堆实现任务优先级执行,显示了其在解决复杂问题时的威力,助力程序员提升效率,实现编程挑战的逆袭。
20 2
|
20天前
|
程序员 Python
程序员必看!Python闭包与装饰器的高级应用,让你的代码更优雅、更强大
【7月更文挑战第7天】Python中的闭包和装饰器是高级特性,用于增强代码功能。闭包是内部函数记住外部作用域的变量,常用于动态函数和函数工厂。示例展示了`make_multiplier_of`返回记住n值的`multiplier`闭包。装饰器则是接收函数并返回新函数的函数,用于不修改原函数代码就添加功能。`my_decorator`装饰器通过`@`语法应用到`say_hello`函数上,展示了在调用前后添加额外行为的能力。这两种技术能提升代码的优雅性和效率。
24 3
|
29天前
|
设计模式 程序员 测试技术
老程序员分享:Python数据模型及Pythonic编程
老程序员分享:Python数据模型及Pythonic编程
22 1
|
1月前
|
人工智能 程序员 Shell
程序员必知:对比python学julia(第二章)
程序员必知:对比python学julia(第二章)
18 2
|
13天前
|
监控 程序员 持续交付
`pylint`是一个高度可配置的Python代码分析工具,它可以帮助程序员查找代码中的错误、样式问题、可能的bug以及不符合编码标准的部分。
`pylint`是一个高度可配置的Python代码分析工具,它可以帮助程序员查找代码中的错误、样式问题、可能的bug以及不符合编码标准的部分。
|
29天前
|
程序员 Python
老程序员分享:python
老程序员分享:python
|
1月前
|
Web App开发 JSON 程序员
老程序员分享:Python有哪些好用的语言翻译方法
老程序员分享:Python有哪些好用的语言翻译方法
11 0
|
1月前
|
程序员 Python
老程序员分享:python爬取电影网站信息并写入文件
老程序员分享:python爬取电影网站信息并写入文件
16 0