使用c#中的HttpWebRequest实现12306余票查询
准备工作
- 下载用于解析JSON的类库(Newtonsoft.Json.dll)(下载地址:Newtonsoft.Json.dll);
- 在C#项目中添加对其的引用。
- 在程序中导入命名空间:
1 2 3 4 5
using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System.Net; using System.Text.RegularExpressions; using System.Xml;
思路
API地址
在浏览器中打开12306主页,点击余票查询,并使用浏览器中的开发者工具,进行抓包。这里,我们查询的是2018.06.25的上海至长沙的车票信息。
此时浏览器发送请求的地址为:
https://kyfw.12306.cn/otn/leftTicket/query?leftTicketDTO.train_date=2018-06-25&leftTicketDTO.from_station=SHH&leftTicketDTO.to_station=CSQ&purpose_codes=ADULT
由此,我们不难分析出API地址为:
|
|
其中,date代表出发日(格式为yyyy-MM-dd),from代表出发站的代码,to代表到达站的代码,id代表车票类型(成人为ADULT
,学生为OX00
);
车站代码
车站对应的代码可在此下载:https://kyfw.12306.cn/otn/resources/js/framework/station_name.js?station_version=1.9055
我们可以使用正则表达式从中提取出关键信息,并保存在一个XML文档中,便于以后的使用。
|
|
依据中文车站名获取对应车站代码的方法为:
|
|
数据模型
为了存储查询结果,我们需要构建一个车票的数据模型,具体如下;
|
|
解析JSON
返回的报文为一个JSON格式的字符串,里面包含有各类车票信息、发车时间以及历时,为了对其进行解析,我们需要下载一个用于解析JSON的类库(下载地址:Newtonsoft.Json.dll)
|
|
效果图
项目地址:EasyLife
参考博客
C#调用12306API做余票查询(该参考博客中的方法已不可用)
完整代码
|
|
使用c#中的HttpWebRequest实现12306余票查询相关推荐
- 返乡之路不容易之12306余票查询并给出备选方案v2
在第一版的返乡之路不容易之12306余票查询并给出备选方案中,给出了余票查询和备选方案推荐,但当时有两个问题: 没有备选排名:虽然给出了备选,但哪个备选好没有给出排序 没有座位信息(商务/一等/二等/ ...
- 最新Python实现12306余票查询系统
首先感谢这篇博客的引导,但是这篇文章已经比较旧了,12306进行了改版,源码编排方式有了变化.12306源码获取的方法可以从这篇博客中学习,我在这里主要贴出对于目前最新的12306的Python余票查 ...
- Python之12306余票查询
简单的Python学习,用Python完成一个12306余票查询- Python之12306余票查询 参考资料来自Python 实现火车票查询工具 需要用到的第三方库 requests,使用 Pyth ...
- 火车票查询系统(一)——利用python实现监控12306余票查询
最近春运高峰,本人从12月开始买过年回家的火车票,然鹅~现实总是那么残酷,放票时间记不住,要么就是不能实时盯着刷票,外面的软件也不知道靠不靠谱,反正是没买到票,所以一怒之下,自己做一个12306余票查 ...
- 12306 余票查询API浅探索
12306 余票查询API浅探索 余票查询请求分析 响应数据解密代码查找调试 数据说明 余票查询请求分析 点击查询,F12进入控制台,进入NetWork面板,查看发送的请求: 点入请求查看详情,很明显 ...
- 铁路局12306余票查询的实现
离上次写的类似于铁道部12306城市选择框的实现过了都快一个月了,最近一直在忙,在学习sharepoint2013,虽然早就实现了12306的余票查询,但是一直没抽出时间来写,刚好这几天也快放假了,抽 ...
- 12306余票查询(爬虫)
经常因为忙而忘记给妹子订票. 每次结果不言而喻. 登个12306查下余票其实很简单,但不知道为什么就是不想登. 所以弄了个爬虫脚本直接查询余票.希望下个女票不会这样尴尬,哈哈哈哈哈哈 12306首页为 ...
- 12306余票查询(一)——分析页面
这段时间Python写的很少,用这个小项目复习一下以前的知识 首先打开12306看一下页面结构吧 因为我们没有点击查询,所以现在页面中是没有余票信息的, 随便选个出发站目的地,日期,点击查询, 发现相 ...
- 12306余票查询(三)——获取余票票价
上一节只能看到相关车次,车次的时间,但是没有很重要的一个信息,票价,这显然是很不合理的.通过分析页面请求情况,可知,车次的票价,都是分开请求的,但是一条请求里,包括了了一个车次的所有票价信息 每个车次 ...
最新文章
- maven多模块eclipse jetty热部署
- JavaScript判断变量数据类型
- AUC 评价指标详解,准确率(ACC),敏感性(sensitivity),特异性(specificity)计算 Python3【TensorFlow2入门手册】
- 音视频技术开发周刊(第123期)
- 使用手机游戏的新闻推送
- 前端学习(3147):react-hello-react之getBeforeUpdate
- python logging日志分割_python logging日志模块以及多进程日志
- Python中被双下划线包围的魔法方法
- Security+ 学习笔记37 脚本和命令行
- 分布式日志收集系统: Facebook Scribe之配置文件
- AtCoder Regular Contest 102 (ARC102) E - Stop. Otherwise... 排列组合
- 蓝桥杯web:2.【Bug 调试】修复注册验证问题
- 5GC 会话建立流程
- M1非接触式IC卡性能简介
- 一文讲清楚什么是类型化数组、ArrayBuffer、TypedArray、DataView等概念
- 光耦驱动单向可控硅_隔离开关电源继电器ssr输出限流电阻,逻辑性光耦驱动单向可控硅电路...
- 高通发布骁龙 695、778G+、480+、680 4G 四款芯片
- 视觉特效,图片转成漫画功能
- ABAP 供应商主数据批量导入
- Nico的刷题日记(一)