首页 > Python资料 博客日记
火车票车票查询-Python
2024-02-27 02:00:05Python资料围观217次
这篇文章介绍了火车票车票查询-Python,分享给大家做个参考,收藏Python资料网收获更多编程知识
一、相关代码
# @Time: 2024/1/22 20:24
# @Author: 马龙强
# @File: 实现12306查票购票.py
# @software: PyCharm
"""
网址:https://www.12306.cn/index/
数据:车次信息
查票链接:https://kyfw.12306.cn/otn/leftTicket/queryE?leftTicketDTO.train_date=2024-01-23&leftTicketDTO.from_station=LON&leftTicketDTO.to_station=XUN&purpose_codes=ADULT
"""
import requests
from pprint import pprint
import json
#导入漂亮的制表
from prettytable import PrettyTable
"""查票功能
1.输入出发城市
2.输入目的城市
3.输入出发时间
根据输入城市 -> 通过 city.json 找到对应城市字母(station.json 对应车站)
12306自动购票
"""
#读取json文件
f = open('city.json',encoding='utf-8').read()
#转成json字典
city_data = json.loads(f)
# print(city_data)
from_city = input('请输入出发的城市:')
site_city = input('请输入到达的城市:')
from_time = input('请输入出发的时间:') #2024-01-25
print('出发城市字母',city_data[from_city])
print('目的城市字母',city_data[site_city])
"""发送请求:模拟浏览器对于url地址发送请求"""
#请求网址
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36",
"Cookie": "_uab_collina=170592620040439510680099; JSESSIONID=80E55A815952C4C2E5B1AC826CC88FF0; BIGipServerpassport=1005060362.50215.0000; guidesStatus=off; highContrastMode=defaltMode; cursorStatus=off; route=6f50b51faa11b987e576cdb301e545c4; BIGipServerotn=2095579402.64545.0000; _jc_save_fromStation=%u6F2F%u6CB3%2CLON; _jc_save_toStation=%u4FE1%u9633%2CXUN; _jc_save_fromDate=2024-01-23; _jc_save_toDate=2024-01-22; _jc_save_wfdc_flag=dc"
}
url = f'https://kyfw.12306.cn/otn/leftTicket/queryE?leftTicketDTO.train_date={from_time}&leftTicketDTO.from_station={city_data[from_city]}&leftTicketDTO.to_station={city_data[site_city]}&purpose_codes=ADULT'
#发送请求
response = requests.get(url=url,headers=headers)
# print(response.json())
# print(response.text)
json_data = response.json()
#实例化一个对象
tb = PrettyTable()
#设置一个字段名
tb.field_names = [
'序号',
'车次',
'出发时间',
'到达时间',
'时长',
'特等座',
'一等座',
'二等座',
'软卧',
'硬卧',
'硬座',
'无座',
]
#设置序号
page = 1
# pprint(json_data)
#提取车次信息所在列表
result = json_data['data']['result']
# pprint(result)
#for循环遍历,提取列表里面的元素
for i in result:
# print(i)
#字符串分割 -> index列表
index = i.split('|')
# print(index)
num = index[3] #车次
time_1 = index[8] #出发时间
time_2 = index[9] #到达时间
time_3 = index[10] #时长
topGrade = index[32] #特等座
first_class = index[31] #一等座
second_class = index[30] #二等座
hrad_sleeper = index[28] #硬卧
hard_seat = index[29] #硬座
no_seat = index[26] #无座
soft_sleeper = index[23] #软卧
dit = {
'车次': num,
'出发时间': time_1,
'到达时间': time_2,
'时长': time_3,
'特等座': topGrade,
'一等座': first_class,
'二等座': second_class,
'软卧': soft_sleeper,
'硬卧': hrad_sleeper,
'硬座': hard_seat,
'无座': no_seat,
}
#车次
# print(index)
# page = 0
# for j in index:
# print(page,j,sep='****')
# page+=1
# break
#添加字段内容
tb.add_row([
page,
num,
time_1,
time_2,
time_3,
topGrade,
first_class,
second_class,
soft_sleeper,
hrad_sleeper,
hard_seat,
no_seat,
])
# print(dit)
page +=1
print(tb)
二、结果
三、注意12306城市对应缩写city.json的获取
1.相关链接:12306城市名对应字母缩写 - 悟透 - 博客园 (cnblogs.com)
2.在桌面创建文本文件,复制内容到文本文件中,保存后,更改后缀为.json,放到与代码同级的目录中
四、过程请查看代码注释
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签:
相关文章
最新发布
- 光流法结合深度学习神经网络的原理及应用(完整代码都有Python opencv)
- Python 图像处理进阶:特征提取与图像分类
- 大数据可视化分析-基于python的电影数据分析及可视化系统_9532dr50
- 【Python】入门(运算、输出、数据类型)
- 【Python】第一弹---解锁编程新世界:深入理解计算机基础与Python入门指南
- 华为OD机试E卷 --第k个排列 --24年OD统一考试(Java & JS & Python & C & C++)
- Python已安装包在import时报错未找到的解决方法
- 【Python】自动化神器PyAutoGUI —告别手动操作,一键模拟鼠标键盘,玩转微信及各种软件自动化
- Pycharm连接SQL Sever(详细教程)
- Python编程练习题及解析(49题)
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Anaconda版本和Python版本对应关系(持续更新...)
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- Windows上安装 Python 环境并配置环境变量 (超详细教程)
- Python与PyTorch的版本对应
- 安装spacy+zh_core_web_sm避坑指南