使用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余票查询(三)——获取余票票价
上一节只能看到相关车次,车次的时间,但是没有很重要的一个信息,票价,这显然是很不合理的.通过分析页面请求情况,可知,车次的票价,都是分开请求的,但是一条请求里,包括了了一个车次的所有票价信息 每个车次 ...
最新文章
- Jupyter Notebook 快捷键(基本)
- Unity3D 游戏引擎之脚本实现模型的平移与旋转(六)
- yum安装nginx的负载均衡详解
- Verilog inout 双向口使用和仿真
- leetcode 1239. 串联字符串的最大长度
- 正则表达式(思维导图速查版)
- SHELL脚本--多命令逻辑执行顺序
- [转载] IoT设备WiFi配网及现状
- 陕西2020行政区划调整_2020西安会成立直辖市
- 如何收割流量红利?UB Store的直播电商“三宝”
- Unity3d+C#斗地主学习探究1
- Tables[0].Rows.count是什么意思
- 如何用html写抖动效果,利用transition实现文字上下抖动的效果
- 路飞学城python全栈开发_[Python] 老男孩路飞学城Python全栈开发重点班 骑士计划最新100G...
- Https环境将key秘钥和crt格式证书转成cer证书
- 利用矩阵相乘公式Cij = ∑ a ik × b kj,编程计算m×n阶矩阵A和n×m阶矩阵B之积
- qrcode二维码生成工具
- passive-interface 总结整理
- 被谷歌出卖定位信息成“嫌疑犯”,花了大价钱才避免窦娥冤 | 一个自行车爱好者自述...
- lisp语言画地物符号_地图符号分为地物符号和特殊符号。
热门文章
- 电脑长按电源键强行关机,对SSD有伤害吗?SSD 掉盘之殇
- pr(premiere)导出h.264显示“导出错误,创建编码器失败” 解决方法
- 如何查看wi-fi的密码_如何在Windows 10上查看所有已保存的Wi-Fi密码
- html文本缩进自动换行,CSS 段落/换行/缩进
- HEU Tunnels(常规最小生成树)
- 这一次我不再低调,老板法拉利的车牌有我的汗水
- 智能mp5 android系统,新Android智能MP5 蓝晨BM790改版上市
- 解决ireport开发报表时detail和last page footer之间存在的空白
- 阿尔巴尼的计算机科学,纽约州立大学阿尔巴尼分校计算机科学研究生语言及申请要求-费用-课程设置...
- QQ好友上限提升至5000人