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 ...
随机推荐
- UVA-307 Sticks (DFS+剪枝)
题目大意:用n根长度未必相等的木棒匹配出最多数量的等长木棒. 题目分析:枚举所有可能的等长木棒的长度,通过DFS的方式逐根匹配,在此过程中要剪枝.先将木棒长度按从大到小排序,也就是说匹配每一根等长木棒 ...
- API To Import Negotiations(转)
原文地址 API To Import Negotiations
- 124. Binary Tree Maximum Path Sum *HARD* -- 二叉树中节点和最大的路径的节点和
Given a binary tree, find the maximum path sum. For this problem, a path is defined as any sequence ...
- ARIMA模型——本质上是error和t-?时刻数据差分的线性模型!!!如果数据序列是非平稳的,并存在一定的增长或下降趋势,则需要对数据进行差分处理!ARIMA(p,d,q)称为差分自回归移动平均模型,AR是自回归, p为自回归项; MA为移动平均,q为移动平均项数,d为时间序列成为平稳时所做的差分次数
https://www.cnblogs.com/bradleon/p/6827109.html 文章里写得非常好,需详细看.尤其是arima的举例! 可以看到:ARIMA本质上是error和t-?时刻 ...
- 安装Ubuntu之后的配置
经常装系统或者给人装系统,这些配置还是记一下,方便恢复到以前的环境 删除libreoffice sudo apt-get remove libreoffice-common 删除Amazon的链接 s ...
- 简单了解json以及使用google json 2.2
json简介: JSON: JavaScript对象表示法(JavaScript Object Notation) JSON是存储和交换信息的语法. JSON是轻量级的文本交互格式 JSON独立于语言 ...
- window.onload 和 body.onload 相互覆盖的本质
从根源上讲,window.onload和<body onload="alert('test');"> 所绑定的对象都是window ,body是没有onload事件的, ...
- 博客(第0次作业)—— New Starting Point
一.最理想的师生关系是健身教练和学员的关系,在这种关系中你期望获得来自老师的那些帮助? 正如文章中所说,这些学员的想法得足够强烈, 他/她才会花钱去参加这样的健身活动,每一个来学习的学生, 都是想学 ...
- 7-8 List Leaves(25 分)
Given a tree, you are supposed to list all the leaves in the order of top down, and left to right. I ...
- 《DSP using MATLAB》Problem 2.2
1.代码: %% ------------------------------------------------------------------------ %% Output Info abo ...