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 ...
随机推荐
- 雷林鹏分享:Ruby CGI Cookies
Ruby CGI Cookies HTTP协议是无状态协议.但对于一个商业网站,它需要保持不同的页面间的会话信息. 如用户在网站注册过程中需要跳转页面,但又要保证之前填写的信息部丢失. 这种情况下 C ...
- Leetcode 33
//这题真的很有思维难度啊,前前后后弄了2个小时才写完.//一定要首先将连续的一段找出来,如果target在里面就在里面找,如果不在连续段里就在另一部分找.//如果后面二分到都是连续段也是没事了,我们 ...
- 将Gridview中的数据出到excel或word中
在以下按钮单击事件中实现:private void btnMIME_Click(object sender, System.EventArgs e){dgShow.AllowPaging = fals ...
- CMD中goto语句会中断for循环特性详解
在这个程序里面由于用到了上篇文章中所说的字符串切割,而用到了Goto强制跳转语句 但是在程序中使用的时候却发现一个错误,当把这个字符切割的代码段如果直接作为非嵌套语句执行正常 但是一旦放到for循环的 ...
- 201621123006 《Java程序设计》第11周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 2. 书面作业 本次PTA作业题集多线程 1. 源代码阅读:多线程程序BounceThread 1.1 BallR ...
- A标签/按钮防止重复提交&页面Loading制作
[实现原理] 防止重复提交与页面的提交时的Loading设置,均是在提交,但是尚未处理完成进行的操作,且提交为异步提交(同步提交不需要考虑).因此,其实现原理是在点击按钮或A标签时,将按钮/A标签置为 ...
- Ubuntu tar方式安装mysql5.7.21 时报错 [ERROR] Can't locate the language directory. 以及 ------ libaio.so.1: cannot open shared object file
参考帖子: http://blog.csdn.net/ty0415/article/details/22958133 首先,在 MySQL 官方网站上下载安装包, 如图: 然后,执行安装命令 bin/ ...
- SQL Server2008 R2开启远程连接总结
============================== SQL Server2008 R2开启远程连接(最全总结) ============================== 安装过程:适用W ...
- mybatis异常:Could not find result map Java.util.Map 问题分析及解决 定位不到具体的位置的错误
mybatis异常:Could not find result map Java.util.Map 问题分析及解决 报这个错误呢,很难受的就是你定位不到具体的地方,找不到位置修改,你只知道有错误,但是 ...
- 20165212实验三——敏捷开发与XP实践
20165212实验三 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 实验知识点总结 (一)敏捷开发与XP 软件工程:把系统的.有序的.可量化的方法应用到软件的开发.运营和维护上的过 ...