实时公交查询Python实现

背景

北京的公交基本都能查询实时公交,这个功能对于公交出行能带来很大的便利,能节省很多等车的时间。最直接的方法就是去公交官网查询,但是每次操作起来都有些吃力,统计了一下公交列表发现有1300+趟车,在其中找特定的一辆得老半天,让人脑阔疼。再一个就是在北京公交集团的微信公众号上面查询,这个还算可以,但是有一次遇到了不准的问题,就不愿意用了。正好最近也比较迷,不知道该干什么好(怀疑人生ing)。趁着周末有空就自己写个Python脚本来实现一下。

环境

python 3.0+

依赖外部库:requests

相关文件参见:https://github.com/Himryang/bjbus-query

效果展示

思路

用到Chrome的开发者工具(Fiddler也差不多),在官网上单步正常操作,在时间轴上能看到自己每次操作对应的内容。主要就是捕捉ajax的请求,分析一下每步request的header,看cookies内容,发现从主页的get请求开始,到最后一步都是一样的(除了SESSIONID里面的时间戳不一样),所以就比较简单了,直接用requests库创建一个session来自动处理过程中的cookies就行了,时间戳相关的部分会自动同步的,不用担心。

这里提取内容都直接写正则实现的,也可以用美味汤(BeautifulSoup)来解析html(为了让最后打包的exe文件,re和bs4我想最好就只用一个库咯)。

代码和注释

后记

最后上一张在Android手机上使用的截图效果:

Android平台的Termux真的很强大,而且还挺稳定,就类似于一个linux bash。在上面安装python3和requests库之后就能正常跑这个脚本了。为了避免每次都繁琐的输入,可以写个简单的shell脚本,内容,取个简单的名字,比如,然后给权限,就能直接用来运行了。一般更多的只会查询固定班次的车,可以改源码来定制。

差不多就这些东西了,又要继续去搬砖了Orz…

注:仅供学习交流,请合理参考使用

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181104G1ERPE00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券