python火车票票价_python的requests库爬取火车票信息和所需价钱
一共分为俩个函数
1,获取城市的各个缩写
def city_number():#获取城市各地区缩写如 "北京":"KCN"
ko=[]
lp=[]
html=requests.get("https://kyfw.12306.cn/otn/resources/js/framework/station_name.js",headers=headers)
htmls=html.content.decode()
opp=htmls[:len(htmls)-1].split("=")[1]
lists_opp=opp.split("|")
for name in lists_opp:
if "@" in name:
lists_opp.remove(name)
for i in range(len(lists_opp)):
if i % 2==0:
ko.append(lists_opp[i])
else :
lp.append(lists_opp[i])
#print(lists_opp)
return dict(zip(ko,lp))
2 ,输入出入发地 得到i结果
def station_infos():
while True:
zidian=city_number()
left=input("请输入出发地:")
lefts=zidian[left]
right=input("请输入到达地:")
time.strftime("")
rights=zidian[right]
shijian=time.strftime("%Y-%m-%d")#格式化时间,,,今天时间
times=input("请输入时间(%s):"%shijian)
if len(times)==0:
times=shijian
html=requests.get("https://kyfw.12306.cn/otn/leftTicket/init?linktypeid=dc&fs=%E5%8E%A6%E9%97%A8,XMS&ts=%E6%BD%A2%E5%B7%9D,KCN&date=2019-10-20&flag=N,N,Y",headers=headers)
for index_url in html.cookies:
Cookies[index_url.name]=index_url.value
r=requests.session()
hui=r.get("https://kyfw.12306.cn/otn/leftTicket/query?leftTicketDTO.train_date={}&leftTicketDTO.from_station={}&leftTicketDTO.to_station= {}&purpose_codes=ADULT".format(times,lefts,rights),headers=headers,cookies=Cookies)
big_car=json.loads(hui.text)['data']['map']
pop=list(big_car.values())
#number_info=len(json.loads(hui.text)['data']['result'])#几辆火车
station_info=json.loads(hui.text)['data']['result']
if len(station_info)==0:
print("当前无车次")
else:
for info in station_info:
data_list=info.split("|")
train_no=data_list[2]
kop="https://kyfw.12306.cn/otn/leftTicket/queryTicketPrice?train_no={}&from_station_no={}&to_station_no={}&seat_types={}&train_date= {}".format(train_no,data_list[16],data_list[17],data_list[35],times)
prices=r.get(kop,headers=headers,cookies=Cookies)#获取车票价钱
ko=json.loads(prices.text)
train_number = data_list[3] #1,车次
go_time = data_list[8] # 2,出发时间
arrive_time = data_list[9] # 3到达时间
cost_time = data_list[10] # 4历时
special_class_seat = data_list[32] or '--' # 5 商务/特等座
first_class_seat = data_list[31] or '--' #6 一等座
second_class_seat = data_list[30] or '--' # 7二等座
soft_sleep = data_list[23] or '--' #9 软卧
hard_sleep = data_list[28] or '--' # 10硬卧
hard_seat = data_list[29] or '--' # 11硬座
no_seat = data_list[26] or '--' # 12无座
if 'M' and 'O' in ko['data']:
st=ko['data']['A9']#商务座/特等座
first=ko['data']['M']#一等座
sec=ko['data']['O']#二等座
wz=ko['data']['WZ']#无座价钱
print(pop[1]+"--->"+pop[0],"车次:{} 出发时间:{} 到达时间:{} 历时:{} 商务/特等座:{} 价钱:{} 一等座:{} 价钱:{} 二等座:{} 价钱:{} 软卧:{} 硬卧:{} 硬座:{} 无座:{}价钱:{}———》开车时间:{}".format(train_number,go_time,arrive_time,cost_time,special_class_seat,st,first_class_seat,first,second_class_seat,sec,soft_sleep,hard_sleep,hard_seat,no_seat,wz,data_list[13]))
elif 'A1' in ko['data']:
yingz=ko['data']['A1']#硬座价钱
yingw=ko['data']['A3']#硬卧价钱
ruanwz=ko['data']['A4']#软卧价钱
wz=ko['data']['WZ']#无座价钱
print(pop[1]+"--->"+pop[0],"车次:{} 出发时间:{} 到达时间:{} 历时:{} 商务/特等座:{} 一等座:{} 二等座:{} 软卧:{}价钱:{} 硬卧:{}价钱:{} 硬座:{}价钱:{} 无座:{}价钱:{}———》开车时间:{}".format(train_number,go_time,arrive_time,cost_time,special_class_seat,first_class_seat,second_class_seat,soft_sleep,ruanwz,hard_sleep,yingw,hard_seat,yingz,no_seat,wz,data_list[13]))
elif 'A9' and 'A1' in ko['data']:
st=ko['data']['A9']#商务座/特等座
first=ko['data']['M']#一等座
sec=ko['data']['O']#二等座
wz=ko['data']['WZ']#无座价钱
yingz=ko['data']['A1']#硬座价钱
yingw=ko['data']['A3']#硬卧价钱
ruanwz=ko['data']['A4']#软卧价钱
print(pop[1]+"--->"+pop[0],"车次:{} 出发时间:{} 到达时间:{} 历时:{} 商务/特等座:{} 价钱:{} 一等座:{} 价钱:{} 二等座:{} 价钱:{} 软卧:{}价钱:{} 硬卧:{}价钱:{} 硬座:{}价钱:{} 无座:{}价钱:{}———》开车时间:{}".format(train_number,go_time,arrive_time,cost_time,special_class_seat,st,first_class_seat,first,second_class_seat,sec,soft_sleep,ruanwz,hard_sleep,yingw,hard_seat,yingz,no_seat,wz,data_list[13]))
3,以下是完整代码
import requests
import json
import time
headers={
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36"
}
Cookies={}
def station_infos():
while True:
zidian=city_number()
left=input("请输入出发地:")
lefts=zidian[left]
right=input("请输入到达地:")
time.strftime("")
rights=zidian[right]
shijian=time.strftime("%Y-%m-%d")#格式化时间,,,今天时间
times=input("请输入时间(%s):"%shijian)
if len(times)==0:
times=shijian
html=requests.get("https://kyfw.12306.cn/otn/leftTicket/init?linktypeid=dc&fs=%E5%8E%A6%E9%97%A8,XMS&ts=%E6%BD%A2%E5%B7%9D,KCN&date=2019-10-20&flag=N,N,Y",headers=headers)
for index_url in html.cookies:
Cookies[index_url.name]=index_url.value
r=requests.session()
hui=r.get("https://kyfw.12306.cn/otn/leftTicket/query?leftTicketDTO.train_date={}&leftTicketDTO.from_station={}&leftTicketDTO.to_station={}&purpose_codes=ADULT".format(times,lefts,rights),headers=headers,cookies=Cookies)
big_car=json.loads(hui.text)['data']['map']
pop=list(big_car.values())
#number_info=len(json.loads(hui.text)['data']['result'])#几辆火车
station_info=json.loads(hui.text)['data']['result']
if len(station_info)==0:
print("当前无车次")
else:
for info in station_info:
data_list=info.split("|")
train_no=data_list[2]
kop="https://kyfw.12306.cn/otn/leftTicket/queryTicketPrice?train_no={}&from_station_no={}&to_station_no={}&seat_types={}&train_date={}".format(train_no,data_list[16],data_list[17],data_list[35],times)
prices=r.get(kop,headers=headers,cookies=Cookies)#获取车票价钱
ko=json.loads(prices.text)
train_number = data_list[3] #1,车次
go_time = data_list[8] # 2,出发时间
arrive_time = data_list[9] # 3到达时间
cost_time = data_list[10] # 4历时
special_class_seat = data_list[32] or '--' # 5 商务/特等座
first_class_seat = data_list[31] or '--' #6 一等座
second_class_seat = data_list[30] or '--' # 7二等座
soft_sleep = data_list[23] or '--' #9 软卧
hard_sleep = data_list[28] or '--' # 10硬卧
hard_seat = data_list[29] or '--' # 11硬座
no_seat = data_list[26] or '--' # 12无座
if 'M' and 'O' in ko['data']:
print("风格化法国")
st=ko['data']['A9']#商务座/特等座
first=ko['data']['M']#一等座
sec=ko['data']['O']#二等座
wz=ko['data']['WZ']#无座价钱
print(pop[1]+"--->"+pop[0],"车次:{} 出发时间:{} 到达时间:{} 历时:{} 商务/特等座:{} 价钱:{} 一等座:{} 价钱:{} 二等座:{} 价钱:{} 软卧:{} 硬卧:{} 硬座:{} 无座:{}价钱:{}———》开车时间:{}".format(train_number,go_time,arrive_time,cost_time,special_class_seat,st,first_class_seat,first,second_class_seat,sec,soft_sleep,hard_sleep,hard_seat,no_seat,wz,data_list[13]))
elif 'A1' in ko['data']:
print("和梵蒂冈")
yingz=ko['data']['A1']#硬座价钱
yingw=ko['data']['A3']#硬卧价钱
ruanwz=ko['data']['A4']#软卧价钱
wz=ko['data']['WZ']#无座价钱
print(pop[1]+"--->"+pop[0],"车次:{} 出发时间:{} 到达时间:{} 历时:{} 商务/特等座:{} 一等座:{} 二等座:{} 软卧:{}价钱:{} 硬卧:{}价钱:{} 硬座:{}价钱:{} 无座:{}价钱:{}———》开车时间:{}".format(train_number,go_time,arrive_time,cost_time,special_class_seat,first_class_seat,second_class_seat,soft_sleep,ruanwz,hard_sleep,yingw,hard_seat,yingz,no_seat,wz,data_list[13]))
elif 'A9' and 'A1' in ko['data']:
print("改好发给")
st=ko['data']['A9']#商务座/特等座
first=ko['data']['M']#一等座
sec=ko['data']['O']#二等座
wz=ko['data']['WZ']#无座价钱
yingz=ko['data']['A1']#硬座价钱
yingw=ko['data']['A3']#硬卧价钱
ruanwz=ko['data']['A4']#软卧价钱
print(pop[1]+"--->"+pop[0],"车次:{} 出发时间:{} 到达时间:{} 历时:{} 商务/特等座:{} 价钱:{} 一等座:{} 价钱:{} 二等座:{} 价钱:{} 软卧:{}价钱:{} 硬卧:{}价钱:{} 硬座:{}价钱:{} 无座:{}价钱:{}———》开车时间:{}".format(train_number,go_time,arrive_time,cost_time,special_class_seat,st,first_class_seat,first,second_class_seat,sec,soft_sleep,ruanwz,hard_sleep,yingw,hard_seat,yingz,no_seat,wz,data_list[13]))
def city_number():#获取城市各地区缩写如 "北京":"KCN"
ko=[]
lp=[]
html=requests.get("https://kyfw.12306.cn/otn/resources/js/framework/station_name.js",headers=headers)
htmls=html.content.decode()
opp=htmls[:len(htmls)-1].split("=")[1]
lists_opp=opp.split("|")
for name in lists_opp:
if "@" in name:
lists_opp.remove(name)
for i in range(len(lists_opp)):
if i % 2==0:
ko.append(lists_opp[i])
else :
lp.append(lists_opp[i])
#print(lists_opp)
return dict(zip(ko,lp))
if __name__=="__main__":
station_infos()
python火车票票价_python的requests库爬取火车票信息和所需价钱相关推荐
- python获取网页json返回空_Python用requests库爬取返回为空的解决办法
首先介紹一下我們用360搜索派取城市排名前20. 我们爬取的网址:https://baike.so.com/doc/24368318-25185095.html 我们要爬取的内容: html字段: r ...
- python画罗小黑_Python3+requests库爬取豆瓣《罗小黑战记》评论
贴一下抓到的评论,最后几条的 本渣是在校学生(非计算机相关),今年上半年接触Python,然后暑假开始学着写爬虫. 新手,本文如有错误,谢谢指正. 这个爬虫开始思路有点乱,现在比较清晰了 思路:req ...
- python爬豆瓣电视剧_python requests库爬取豆瓣电视剧数据并保存到本地详解
首先要做的就是去豆瓣网找对应的接口,这里就不赘述了,谷歌浏览器抓包即可,然后要做的就是分析返回的json数据的结构: https://movie.douban.com/j/search_subject ...
- python使用requests库爬取淘宝指定商品信息
python使用requests库爬取淘宝指定商品信息 在搜索栏中输入商品 通过F12开发者工具抓包我们知道了商品信息的API,同时发现了商品数据都以json字符串的形式存储在返回的html内 解析u ...
- 用python爬取qq空间内容_利用Fiddler抓包和py的requests库爬取QQ空间说说内容并写入文件...
[Python] 纯文本查看 复制代码#!C:\Program Files\Python36 python # -*- coding: UTF-8 -*- """ @au ...
- 用Requests库爬取微博照片
用Requests库爬取微博照片 代码如下: #微博图片爬取 import requests import os #文件目录方法模块 url="https://wx3.sinaimg.cn/ ...
- python实现对python123平台题库爬取
最近在搞软件工程课程设计,做了一个在线考试系统,为了弄到题库数据,简单利用了python中的selenium库实现对python123平台自动登录并获取相应的选择试题. 实现自动登录并获取题目 只针对 ...
- 使用Python和selenium的Chromedriver模拟登陆爬取网站信息(beautifulsoup)
爬取的信息很多,所以需要设置断点,在程序重启时能继续爬取.并且能在断掉之后自动重启. 1.setting.py 对爬取的常量进行设置 """ 基本信息设置 "& ...
- 利用python requests库爬取淘宝商品评论_python
文章目录 一.起因 二.项目实现 1. 分析实现方式 2. 编码实现 3. 完整代码 三.思考与改进 一.起因 看到一篇文章,感觉自己可以动手试试 Python 不用selenium 带你高效爬取京东 ...
- python爬取图片的库_16-python爬虫之Requests库爬取海量图片
Requests 是一个 Python 的 HTTP 客户端库. Request支持HTTP连接保持和连接池,支持使用cookie保持会话,支持文件上传,支持自动响应内容的编码,支持国际化的URL和P ...
最新文章
- 深度学习入门Fast.ai 2.0上线!自带中文字幕,所有笔记、资源全部免费!
- 是不是“异常”让我的脑子糊涂了?
- XML file does not appear to have any style information associated with it. XHTML程序出现这个错误
- .NET各版本一览表
- php中的$_server,细说PHP中的$_SERVER
- mysql query browser的使用_影响MySQL性能的配置参数
- 深入理解BS结构应用程序
- 移动端机器学习模型压缩也自动化了:腾讯新框架为自家模型加速50%
- 雪,是死掉的雨,是雨的精魂
- java 2 swing_Java Swing2 基本登錄框
- JAVA读取配置文件工具类
- Qt学习视频资料汇总
- java 图片md5码_java 对图片进行MD5算法
- Arduino UNO测试BME280温湿度气压传感器
- 论文中的三线表及表格规范
- k64 datasheet学习笔记1---概述
- 暴力破解word文档限制编辑加密保护
- 如果改计算机mac,怎么修改计算机mac_修改计算机mac
- PHP实现短网址规则,使用PHP生成短网址的方案
- discuz论坛中,如何上传并插入一段本地视频,并支持实时展示、实时播放
热门文章
- Springboot配置多个数据源
- 计算机网络共享打不开,电脑只要打开共享提示“无法启用共享访问”如何解决...
- Session Fixation
- kryo com.esotericsoftware.kryo.KryoException: Buffer underflow.
- 深度学习方法的超分辨率(Super-resolution)方向论文【不定期更新】
- LayUI中的基本元素之进度条
- MTK6737功能展示
- 密立根油滴实验的c语言程序,密立根油滴实验数据处理程序c++
- Shinobi视频监控平台
- java计算机毕业设计共享充电宝管理系统MyBatis+系统+LW文档+源码+调试部署