Python接口抓取12306火车票信息

最近在讲解接口测试,然后就拿12306网站来开刀,现在稍微大型一点的网站都是走接口,分布式部署,三层架构等等的。

既然要做接口,首先就需要抓取接口服务器已经入参;

Chrome浏览器的F12功能就凸显出来了,我们先看看12306是如何来查询火车票信息的。打开浏览器开发者工具,切换到network页面,然后在12306选择广州-长沙,点击查询;

可以看到station_name.js英文稍微溜一点的,都能猜测到这个是火车站站点名称。好吧,我们复制全路径,然后在浏览器中打开,如下图:

果然我们看到了帝都是排名第一的,并且每个站点以@分隔,站点详细信息以|切割;例如;

@bjb|北京北|VAP|beijingbei|bjb|0

小写的英文是用来快速检索的,有时候我们在框里面输入拼音就能自动化检索到所有同名的火车站信息。大写的VAP是标识符,用来标准每个站点的,因为全国存在很多拼音同名的城市(szb 可以是深圳北 也可以是苏州北),铁老大出了如此的招数。

得到了url,https协议,那么采用urllib2的库手动写一个get方法;

然后根据get方法,服务器返回的数据,我们还需要写一个解析的方法;根据地名来解析对应的城市code编码,如下;

城市编码已经获取出来,那么接下来就是查询车次,鱼票等等的数据,我们刷新一个12306网页,抓取网络信息看看有什么信息吧;

我们点击一下这个红色的链接查看请求信息吧(红色是入参);

切入到response页面,查看服务器返回数据,原来是json格式的;

找到这个实际的接口地址(https://kyfw.12306.cn/otn/leftTicket/query?leftTicketDTO.train_date=2017-05-05&leftTicketDTO.from_station=GZQ&leftTicketDTO.to_station=CSQ&purpose_codes=ADULT),我们在浏览器中去打开查看,果然看到全部的车次了;

查看数据,跟字典很像啊,而且还有列表,字典嵌套字典,列表嵌套字典,复杂吗?那就写一个解析函数来慢慢解析呗,一层层的剥开你的心。。。。。。

代码如下:

最后我们需要拼接参数地址,

Python接口获取12306火车票信息相关推荐

  1. Python实现查询12306火车票信息

    例子来源于马哥的公众号,看了几遍,有些地方存在些疑问,然后就自己查找些资料,重写的一下,但是对于获取到的信息,并不能有效的解析出来,而且对于中文字符处理,并不是很好,请大神指教下!谢过! 1.接口设置 ...

  2. python爬火车票是不是违法_python利用selenium+requests+beautifulsoup爬取12306火车票信息...

    在高速发展的时代.乘车出远门是必不可少的,有些查询信息是要收费的.这里打造免费获取火车票信息 想要爬取12306火车票信息,访问12306官方网站,输入出发地,目的地  ,时间  之后点击确定,这是我 ...

  3. 2021最新 python爬取12306列车信息自动抢票并自动识别验证码(三)购票篇

    项目前言 tiebanggg又来更新了,项目--[12306-tiebanggg-master]注:本项目仅供学习研究,如若侵犯到贵公司权益请联系我第一时间进行删除:切忌用于一切非法途径,否则后果自行 ...

  4. 2021最新python爬取12306列车信息自动抢票并自动识别验证码

    项目描述 项目前言 tiebanggg又来更新了,项目--[12306-tiebanggg-master]注:本项目仅供学习研究,如若侵犯到贵公司权益请联系我第一时间进行删除:切忌用于一切非法途径,否 ...

  5. python爬取12306列车信息自动抢票并自动识别验证码(二)selenium登录验证篇

    项目前言 自学python差不多有一年半载了,这两天利用在甲方公司搬砖空闲之余写了个小项目--[12306-tiebanggg-master]注:本项目仅供学习研究,如若侵犯到贵公司权益请联系我第一时 ...

  6. Python爬虫实现12306火车票查询

    昨天早上,突发奇想想要给基友弄一个火车票查询工具,顺便熟悉一下html.json.js格式,为之后制作微信小程序做准备,于是便开始了爬虫的道路. 12306网站想要爬跟之前爬静态网页并不一样,首先由于 ...

  7. python爬取12306列车信息自动抢票并自动识别验证码(一)列车数据获取篇

    项目前言 自学python差不多有一年半载了,这两天利用在甲方公司搬砖空闲之余写了个小项目--[12306-tiebanggg-master].注:本项目仅供学习研究,如若侵犯到贵公司权益请联系我第一 ...

  8. Python基础之12306车票信息抓取案例

    Python基础之12306车票信息抓取案例 注:12306上请求网址链接经常变化,需要随时检查更改(我已经修改三遍了),请求的数据也有小几率发生变动,所以也需要检查更改 2018-10-22 第四遍 ...

  9. chatgpt赋能python:Python微信获取群聊信息:顶级互联的新标准

    Python 微信获取群聊信息:顶级互联的新标准 Python 作为一种开源编程语言,已成为解决各种工程问题的首选方式之一.Python 是一种直观,并且简单易懂的编程语言,同时也非常强大,能够完成各 ...

最新文章

  1. const与#define的异同
  2. 富士通服务器 css灯亮,富士通空调指示灯故障含义-富士通空调指示灯代码
  3. 程序员面试系列——大小端
  4. python堆积图的画法_Matplotlib: 堆积柱状图的画法
  5. STM32F103实现点灯(寄存器方式)
  6. 通过Flume简单实现Kafka与Hive对接(Json格式)
  7. html table渐变色,Safari浏览器中的渐变问题(给tr添加的渐变效果作用在了td上)...
  8. JS模块化开发_思维导图
  9. matlab安装软件 Matlab视频教程李大勇 MATLAB程序开发入门课程 MATLAB神经网络30个案例分析及源程序
  10. python文件写入方式_Python写入文件的方式
  11. 菜哥学知识图谱(通过“基于医疗知识图谱的问答系统”)(三)(代码分析)
  12. TinyMCE自定义表情包
  13. 【这很AI】斯坦福新人工智能系统曝光:用算法优化难民工作分配
  14. echarts设置饼图标示线以及标示文字的颜色等相关样式
  15. python多久可以完全学会_python好学吗自学要学多久
  16. threejs 实现场景围绕鼠标缩放,而不是默认的场景缩放中心
  17. 使用GetPixel要注意
  18. fluent柱坐标系设定_Fluent中速度入口条件要设置哪些参数
  19. 中控服务器PDS系统,bss中控服务器主机
  20. 无人驾驶小车调试笔记(六)-- 车轮校准

热门文章

  1. eve-ng导入华为路由器镜像
  2. PHP网站头部通栏设计
  3. nasm纠正性训练指南pdf_书籍NASMCES美国国家运动医学学会纠正性训练指南
  4. java祖冲之加密算法_对称加密和非对称加密
  5. vue element ui 子组件向父组件传值
  6. 2019 蓝桥杯省赛 A 组模拟赛(一) D. 结果填空:修建公路 (二进制)
  7. linux 文本行倒叙,Linux文本行倒序排列6种方法
  8. 常见光学材料透过波段表
  9. 通达OA-今日学习 精灵报错提示初始化失败
  10. 1072 开学寄语(C语言)