Requests抓取火车票数据
1.数据接口
返回的是2016-8-01南昌到郴州的火车票信息,格式为json。
数据如下:
{
"validateMessagesShowId":"_validatorMessage",
"status":true,"httpstatus":200,
"data":{
"datas":[
{
"train_no":"5u000G140101",
"station_train_code":"G1401",
"start_station_telecode":"NXG",
"start_station_name":"南昌西",
"end_station_telecode":"IZQ",
"end_station_name":"广州南",
"from_station_telecode":"NXG",
"from_station_name":"南昌西",
"to_station_telecode":"ICQ",
"to_station_name":"郴州西",
"start_time":"07:29",
"arrive_time":"10:42",
"day_difference":"",
...
"swz_num":"无"
},
{
...
}
]
}
2.获取GZ到深圳火车票数据
import requests
import json class trainTicketsSprider: def getTicketsInfo(self,purpose_codes,queryDate,from_station,to_station):
self.url = 'https://kyfw.12306.cn/otn/lcxxcx/query?purpose_codes=%s&queryDate=%s&from_station=%s&to_station=%s' %(purpose_codes,queryDate,from_station,to_station)
self.headers = {
"Accept":"text/html,application/xhtml+xml,application/xml;",
"Accept-Encoding":"gzip",
"Accept-Language":"zh-CN,zh;q=0.8",
"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36"
}
self.TicketSession = requests.Session()
self.TicketSession.verify = False #关闭https验证
self.TicketSession.headers = self.headers
try:
self.resp_json = self.TicketSession.get(self.url)
self.ticketsDatas = json.loads(self.resp_json.text)["data"]["datas"]
return self.ticketsDatas
except Exception as e:
print(e) def isZero(num):
if num == '--' or '无':
return ''
else:
return num def main():
purpose_codes = 'ADULT'
queryDate = '2016-08-01'
from_station = 'GZQ'
to_station = 'SZQ'
TicketSprider = trainTicketsSprider()
res= TicketSprider.getTicketsInfo(purpose_codes,queryDate,from_station,to_station)
for i,ticketInfo in enumerate(res):
print(u"车次:%s" %ticketInfo["station_train_code"])
print(u"起始站:%s" %ticketInfo["start_station_name"])
print(u"目的地:%s" %ticketInfo["to_station_name"])
print(u"开车时间:%s" %ticketInfo["start_time"])
print(u"到达时间:%s" %ticketInfo["arrive_time"])
print(u"二等座还剩:%s张票" %(ticketInfo["ze_num"]))
print(u"一等座还剩:%s张票" % (ticketInfo["zy_num"]))
print(u"商务座还剩:%s张票" %(ticketInfo["swz_num"]))print(u"无座还剩:%s张票" %(ticketInfo["wz_num"]))
print(u"是否有票:%s" %ticketInfo["canWebBuy"])
print("**********************************") if __name__ == '__main__':
main()
结果如下:
车次:G6205
起始站:广州南
目的地:深圳北
开车时间:07:20
到达时间:07:57
二等座还剩:708张票
一等座还剩:108张票
商务座还剩:24张票
无座还剩:无张票
是否有票:Y

Requests抓取火车票数据的更多相关文章
- python requests抓取NBA球员数据,pandas进行数据分析,echarts进行可视化 (前言)
python requests抓取NBA球员数据,pandas进行数据分析,echarts进行可视化 (前言) 感觉要总结总结了,希望这次能写个系列文章分享分享心得,和大神们交流交流,提升提升. 因为 ...
- Tweepy1——抓取Twitter数据
sklearn实战-乳腺癌细胞数据挖掘 https://study.163.com/course/introduction.htm?courseId=1005269003&utm_campai ...
- Charles 如何抓取https数据包
Charles可以正常抓取http数据包,但是如果没有经过进一步设置的话,无法正常抓取https的数据包,通常会出现乱码.举个例子,如果没有做更多设置,Charles抓取https://www.bai ...
- 手把手教你用python打造网易公开课视频下载软件3-对抓取的数据进行处理
上篇讲到抓取的数据保存到rawhtml变量中,然后通过编码最终保存到html变量当中,那么html变量还会有什么问题吗?当然会有了,例如可能html变量中的保存的抓取的页面源代码可能有些标签没有关闭标 ...
- iOS开发——网络实用技术OC篇&网络爬虫-使用青花瓷抓取网络数据
网络爬虫-使用青花瓷抓取网络数据 由于最近在研究网络爬虫相关技术,刚好看到一篇的的搬了过来! 望谅解..... 写本文的契机主要是前段时间有次用青花瓷抓包有一步忘了,在网上查了半天也没找到写的完整的教 ...
- iOS开发——网络使用技术OC篇&网络爬虫-使用正则表达式抓取网络数据
网络爬虫-使用正则表达式抓取网络数据 关于网络数据抓取不仅仅在iOS开发中有,其他开发中也有,也叫网络爬虫,大致分为两种方式实现 1:正则表达 2:利用其他语言的工具包:java/Python 先来看 ...
- iOS—网络实用技术OC篇&网络爬虫-使用java语言抓取网络数据
网络爬虫-使用java语言抓取网络数据 前提:熟悉java语法(能看懂就行) 准备阶段:从网页中获取html代码 实战阶段:将对应的html代码使用java语言解析出来,最后保存到plist文件 上一 ...
- Node.js的学习--使用cheerio抓取网页数据
打算要写一个公开课网站,缺少数据,就决定去网易公开课去抓取一些数据. 前一阵子看过一段时间的Node.js,而且Node.js也比较适合做这个事情,就打算用Node.js去抓取数据. 关键是抓取到网页 ...
- C#抓取天气数据
使用C#写的一个抓取天气数据的小工具,使用正则匹配的方式实现,代码水平有限,供有需要的同学参考.压缩包中的两个sql语句是建表用的. http://files.cnblogs.com/files/yu ...
随机推荐
- 分享6款优秀的 AR/VR 开源库
今天,为大家推荐几款优秀的 AR/VR 开源库,希望能对大家有所帮助~ 1.AR.js AR.js 是一款应用于 Web 的高效增强现实(AR)库,基于 three.js + jsartoolkit5 ...
- HDU 4826 (分类DP)
Labyrinth Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- UVA-1515 Pool construction (最小割)
题目大意:有一块地,分成nxm块.有的块上长着草,有的块上是荒地.将任何一块长着草的块上的草拔掉都需要花费d个力气,往任何一块荒地上种上草都需要花费f个力气,在草和荒地之间架一个篱笆需要花费b个力气, ...
- UVALive-3415 Guardian of Decency (最大独立集)
题目大意:一个老师要带一些学生去春游,但是要带的学生中任意两个人都满足下面四个条件中的至少一个:1.性别相同:2.身高差大与40公分:3.最喜欢的音乐类型不同:4.最喜欢的体育运动相同.问老师最多能带 ...
- App6种常见的数据加载设计
App6种常见的数据加载设计 设计师在进行APP设计的设计时,往往会更加专注于界面长什么样,界面和界面之间怎么跳转,给予用户什么样的操作反馈,却偏偏特别容易忽略掉一个比较重要的环节,就是APP数据加载 ...
- SpringMvc测试框架详解----服务端测试
随着RESTful Web Service的流行,测试对外的Service是否满足期望也变的必要的.从Spring 3.2开始Spring了Spring Web测试框架,如果版本低于3.2,请使用sp ...
- 如何在JavaScript中手动创建类数组对象
前言 关于什么是js的类数组对象这里不再赘述.可以参考这个链接,还有这里. js中类数组对象很多,概念简单的讲就是看上去像数组,又不是数组,可以使用数字下标方式访问又没有数组方法. 例: argume ...
- JSP乱码(小记)
Post提交乱码: 设置请求的编码方式: request.setCharacterEncoding("utf-8"); 设置响应的编码方式: response.setCharact ...
- 银行卡号每隔4位插入空格 (再用户填写银行卡号的时候挺有用的) IE9+
链接 输入4为数字, 再输入一个数字调试一下就能看懂了 <head lang="en"> <meta charset="UTF-8"> ...
- 使用rollup 开发专业js library
rollup 是一个不错的javascript 模块打包器,一般我们用来构建library 安装 npm install -g rollup 参考集成jquey && shortid ...