欢迎随时回家——python制作一个火车票抢票版本(附完整代码,仅供学习参考)

news/2024/12/23 5:13:05/

嗨害大家好鸭~我是小熊猫🖤

今天教大家用Python制作一个12306查票程序脚本(仅供学习参考)


有什么python相关报错解答自己不会的、或者源码资料/模块安装/女装大佬精通技巧 都可以来这里:(https://jq.qq.com/?_wv=1027&k=2Q3YTfym)或者+V:python10010问我(文末就有)

在这里插入图片描述

首先,先导入本次所需的模块

import requests
import pandas as pdimport json

请求数据

找到数据来源

url = 'https://kyfw.12306.cn/otn/leftTicket/query'
data = {'leftTicketDTO.train_date': train_date,'leftTicketDTO.from_station': city_json[from_station],'leftTicketDTO.to_station': city_json[to_station],'purpose_codes': 'ADULT',
}
headers = {'Cookie': '_uab_collina=163108019860709243490927; JSESSIONID=3A879F34238B594124705B10D7C0B0E6; BIGipServerotn=3956736266.64545.0000; guidesStatus=off; highContrastMode=defaltMode; cursorStatus=off; BIGipServerpassport=870842634.50215.0000; RAIL_EXPIRATION=1631354049020; RAIL_DEVICEID=jY49UGp1PWZZ0cY6CWj2wmKFDH60qsPXbu7L4D2DjNDJSM4sbqZmmlUm62-6L3k9SNtBAUgBPn7Rh1-FAxka97-nHNpT3QIh5YIXtw3mGao0mjLNkIv2ayvwqxWyFhdbos5_ziUA3XVil7awDZ0EjzKBAWdl22Hu; route=495c805987d0f5c8c84b14f60212447d; _jc_save_fromStation=%u957F%u6C99%2CCSQ; _jc_save_fromDate=2021-09-08; _jc_save_toDate=2021-09-08; _jc_save_wfdc_flag=dc; _jc_save_toStation=%u5CB3%u9633%u4E1C%2CYIQ',# 'Host': 'kyfw.12306.cn',# 'Referer': 'https://kyfw.12306.cn/otn/leftTicket/init?linktypeid=dc&fs=%E9%95%BF%E6%B2%99,CSQ&ts=%E5%B2%B3%E9%98%B3%E4%B8%9C,YIQ&date=2021-09-08&flag=N,N,Y','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
response = requests.get(url=url, params=data, headers=headers)

自动识别编码

response.encoding = response.apparent_encoding

数据解析取值

    for index in result:# requests.utils.unquote(index)index_list = index.replace('有', 'Yes').replace('无', 'No').split('|')# print(index_list)train_number = index_list[3]  # 车次if 'G' in train_number:time_1 = index_list[8]  # 出发时间time_2 = index_list[9]  # 到达时间prince_seat = index_list[32]  # 特等座first_class_seat = index_list[31]  # 一等座second_class = index_list[30]  # 二等座dit = {'Num': train_number,'Start': time_1,'End': time_2,'Top': prince_seat,'First': prince_seat,'Second': second_class,'Yz': '-','Wz': '-','Rw': '-','Yw': '-',}else:time_1 = index_list[8]  # 出发时间time_2 = index_list[9]  # 到达时间hard_seat = index_list[29]  # 硬座no_seat = index_list[26]  # 无座soft_sleeper = index_list[23]  # 软卧hard_sleeper = index_list[28]  # 硬卧dit = {'Num': train_number,'Start': time_1,'End': time_2,'Top': '-','First': '-','Second': '-','Yz': hard_seat,'Wz': no_seat,'Rw': soft_sleeper,'Yw': hard_sleeper,}lis.append(dit)content = pd.DataFrame(lis)print(content)

实现查询一座城市车次数据
请添加图片描述

实现全国车次查询

f = open('city.json', mode='r', encoding='utf-8')
text = f.read()
city_json = json.loads(text)
while True:from_station = input('请输入你出发的城市: ')to_station = input('请输入你达到的城市: ')train_date = input('请输入乘车时间(2021-09-08/年-月-日):')

再次查询/退出

again = input('是否继续查询(Y/N): ')
if again == 'Y' or again == 'y':continue
else:break

完整代码

python学习交流群:660193417###
import requests
import pandas as pdimport jsonf = open('city.json', mode='r', encoding='utf-8')
text = f.read()
city_json = json.loads(text)
while True:from_station = input('请输入你出发的城市: ')to_station = input('请输入你达到的城市: ')train_date = input('请输入乘车时间(2021-09-08/年-月-日):')url = 'https://kyfw.12306.cn/otn/leftTicket/query'data = {'leftTicketDTO.train_date': train_date,'leftTicketDTO.from_station': city_json[from_station],'leftTicketDTO.to_station': city_json[to_station],'purpose_codes': 'ADULT',}headers = {'Cookie': '_uab_collina=163108019860709243490927; JSESSIONID=3A879F34238B594124705B10D7C0B0E6; BIGipServerotn=3956736266.64545.0000; guidesStatus=off; highContrastMode=defaltMode; cursorStatus=off; BIGipServerpassport=870842634.50215.0000; RAIL_EXPIRATION=1631354049020; RAIL_DEVICEID=jY49UGp1PWZZ0cY6CWj2wmKFDH60qsPXbu7L4D2DjNDJSM4sbqZmmlUm62-6L3k9SNtBAUgBPn7Rh1-FAxka97-nHNpT3QIh5YIXtw3mGao0mjLNkIv2ayvwqxWyFhdbos5_ziUA3XVil7awDZ0EjzKBAWdl22Hu; route=495c805987d0f5c8c84b14f60212447d; _jc_save_fromStation=%u957F%u6C99%2CCSQ; _jc_save_fromDate=2021-09-08; _jc_save_toDate=2021-09-08; _jc_save_wfdc_flag=dc; _jc_save_toStation=%u5CB3%u9633%u4E1C%2CYIQ',# 'Host': 'kyfw.12306.cn',# 'Referer': 'https://kyfw.12306.cn/otn/leftTicket/init?linktypeid=dc&fs=%E9%95%BF%E6%B2%99,CSQ&ts=%E5%B2%B3%E9%98%B3%E4%B8%9C,YIQ&date=2021-09-08&flag=N,N,Y','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'}response = requests.get(url=url, params=data, headers=headers)response.encoding = response.apparent_encodingresult = response.json()['data']['result']lis = []for index in result:# requests.utils.unquote(index)index_list = index.replace('有', 'Yes').replace('无', 'No').split('|')# print(index_list)train_number = index_list[3]  # 车次if 'G' in train_number:time_1 = index_list[8]  # 出发时间time_2 = index_list[9]  # 到达时间prince_seat = index_list[32]  # 特等座first_class_seat = index_list[31]  # 一等座second_class = index_list[30]  # 二等座dit = {'Num': train_number,'Start': time_1,'End': time_2,'Top': prince_seat,'First': prince_seat,'Second': second_class,'Yz': '-','Wz': '-','Rw': '-','Yw': '-',}else:time_1 = index_list[8]  # 出发时间time_2 = index_list[9]  # 到达时间hard_seat = index_list[29]  # 硬座no_seat = index_list[26]  # 无座soft_sleeper = index_list[23]  # 软卧hard_sleeper = index_list[28]  # 硬卧dit = {'Num': train_number,'Start': time_1,'End': time_2,'Top': '-','First': '-','Second': '-','Yz': hard_seat,'Wz': no_seat,'Rw': soft_sleeper,'Yw': hard_sleeper,}lis.append(dit)pd.set_option('display.max_rows', None)content = pd.DataFrame(lis)print(content)again = input('是否继续查询(Y/N): ')if again == 'Y' or again == 'y':continueelse:break

请添加图片描述

今天的文章就到这里啦,希望对正在自学的你有所帮助~

我是小熊猫,咱下篇文章再见啦(✿◡‿◡)

在这里插入图片描述


http://www.ppmy.cn/news/918455.html

相关文章

火车票抢票软件哪个成功率高更靠谱?

火车票抢票软件哪个成功率高更靠谱?小编推荐使用去“哪儿网”;市场上最炫酷最全的“旅游、出行应用”,特价机票、酒店特价房预订;12,000条国内国际航线查询起落状态一览无遗、180天机票价格趋势实时查看;身边地图式酒店…

php写抢票脚本,火车票抢票python代码公开揭秘!

市场上很多火车票抢票软件大家应该非常熟悉,但很少有人研究具体是怎么实现的,所以觉得很神秘,其实很简单。下面使用Python模拟抢票程序,给大家揭秘抢票到底是怎么回事。 该代码仅供参考,主要用于大家沟通交流,禁止用于商业用途。 具体代码如下,可以修改成自己的12306用户…

火车票·自动抢票软件

本文介绍的是用Python语言实现 12306 自动预定列车票,也就是坊间常说的“抢票”,但个人觉得,这不算是“抢”,只不过是一定程度的自动化。 软件作者个人觉得还是很良心的,不喜互喷 火车票抢票软.zip - 蓝奏云文件大小…

如何用Python打造火车票抢票软件?

首先,让我们了解一下12306火车票的基本信息。12306是中国铁路客户服务中心的官方网站,旅客可以在该网站上查询火车票信息和购买火车票。但是由于火车票非常抢手,导致很多人在购票时遇到了困难。因此,我们可以使用Python编写一个自…

资产管理简单实用技巧,让你告别加班!

资产管理系统在现代商业环境中扮演着关键的角色。随着企业资产规模的不断扩大和多样化,有效地管理和跟踪资产变得至关重要。 随着企业竞争的加剧和资产管理的重要性日益凸显,资产管理系统将继续在各行各业中发挥着不可或缺的作用。无论是生产设备、办公设…

cruzer php sandisk 闪迪u盘量产工具_SanDisk Cruzer Micro(U盘量产工具) V1.0 电脑版

SanDisk Cruzer Micro是一款非常实用的U盘量产工具,该工具的数据传输率为6MB/S,可用来进行U盘的分区、格式化和产出,适合SanDisk Cruzer Micro 16G U盘使用。 【使用方法】 一 .下载附件的软件Universal_Customizer.放在同一个文件夹下. 二.解…

什么是U盘量产工具?量产基本知识

什么是U盘量产工具?量产基本知识 1. 什么是量产工具,有何作用? 量是指批量的意思,即量产工具可以一次性生产出很多U盘,只要你的USB孔足够。 量产工具是针对U盘主控芯片进行操作的由厂商开发的低层软件,作用&#xff1…

U盘开发之量产工具

最近几个月,一直在写U盘的固件以及应用层的接口,一个人孤独的摸索着,期间多次遇到意想不到的困难,总算挺过来,今天把量产工具实现了一下,勉强可以用于生产吧,总算可以松一口气了。接下来打算把这…