我使用的时间是2023年7月22日,后续12306有可能继续更新,所以这里只是一个分享

首先打开12306的官网

然后随便找一个路线进行查询

f12打开开发者菜单后找到station_name.js?station_versio这个js,

 点进去后是这样的

注意我标记的地方,类似于这样的字段其实就是在12306中站点名字的代号,然后我们就可以上代码了:

import requests
import pandas as pd
import datetime
import random
#train_date = '2023-7-23' # 出发日期
start_date = datetime.date(2023, 7, 22)
end_date = datetime.date(2023, 7, 30)
random_date = start_date + datetime.timedelta(days=random.randint(0, (end_date - start_date).days))
train_date = random_date.strftime("%Y-%m-%d")
from_stations = ['BJP', 'VNP', 'BXP', 'IZQ', 'CUW', 'GGQ', 'SHH', 'SNH', 'AOH', 'SXH', 'TJP', 'TIP', 'TXP', 'CCT', 'CRT', 'ICW', 'CNW', 'CDW', 'CWQ', 'FZS', 'FYS', 'GIW', 'GZQ', 'HBB', 'VAB', 'HFH', 'NDC', 'HHC', 'HMQ', 'VUQ', 'HGH', 'HZH', 'JNK', 'JGK', 'LZJ', 'LAJ', 'NCG', 'NJH', 'NKH', 'NNZ', 'SJP', 'SYT', 'SBT', 'WHN', 'WMR', 'EAY', 'XNO', 'ZZF', 'AQH', 'BBH', 'BHZ', 'BIZ', 'BDC', 'BTC', 'BXT', 'CEH', 'IYH', 'CZH', 'DUT', 'DHL', 'DDW', 'DFT', 'DLT', 'RXW', 'ESN', 'FES', 'FJQ', 'FET', 'GBZ', 'GLZ', 'GBQ', 'GZG', 'GBT', 'HKN', 'HMR', 'EUH', 'HSN', 'HXZ', 'RNH', 'JBH', 'JJG', 'JLL', 'JAC', 'JUH', 'JFW', 'JZT', 'KFF', 'KNH', 'UAH', 'LCN', 'LYS', 'LLF', 'LZZ', 'LZD', 'MYW', 'NGH', 'NCW', 'PVD', 'PCW', 'QSW', 'QDK', 'QHX', 'QYS', 'QEH', 'RJG', 'SHD', 'NIW', 'SQF', 'SRG', 'SEQ', 'SYQ', 'SNN', 'SZQ', 'SZH', 'SZN', 'TGP', 'FUP', 'TSP', 'WCN', 'WKK', 'WHH', 'WXH', 'VRH', 'EFQ', 'XKS', 'XMS', 'XFN', 'XCH', 'YWY', 'HAN', 'TWQ', 'NUW', 'YAK', 'YWH', 'YON', 'YUQ', 'AOQ', 'ZBK', 'ZHQ', 'ZIQ', 'ZJH', 'ZEK', 'ADX', 'ARW', 'ARH', 'ALN', 'AXT', 'ASH', 'BWQ', 'BMH', 'BEP', 'BDP', 'BNN', 'BWH', 'IBQ', 'BLQ', 'BYT', 'CIN', 'CLK', 'DAQ', 'CPT', 'ESH', 'CXH', 'ICQ', 'CBP', 'DAG', 'UFQ', 'DXT', 'LFX', 'RHX', 'DRQ', 'DWT', 'RUH', 'DYW', 'DYH', 'EXH', 'IAW', 'EWH', 'DIP', 'ECN', 'FAS', 'FIH', 'FHH', 'FQS', 'FST', 'FDY', 'FBT', 'GCN', 'GGZ', 'GMK', 'GAG', 'GYF', 'GNQ', 'GSS', 'GAT', 'VXN', 'WKW', 'HCN', 'HXT', 'IGW', 'HJS', 'HPD', 'VQH', 'HDY', 'VCH', 'HEQ', 'HVQ', 'VZH', 'JJS', 'JWQ', 'JES', 'EGH', 'JRN', 'EAH', 'JNL', 'EPH', 'JZK', 'JBN', 'JZH', 'JOD', 'JOF', 'KSH', 'KXT', 'LPF', 'LJP', 'UFH', 'LKS', 'UJL', 'LIQ', 'USH', 'LSG', 'LAS', 'LET', 'UXP', 'LYK', 'LYT', 'LMH', 'LVS', 'LPQ', 'LQJ', 'MBN', 'MNF', 'MHQ', 'MQQ', 'MFQ', 'NES', 'NHH', 'NJS', 'NNQ', 'NOQ', 'NEH', 'PAW', 'PRT', 'PGZ', 'PBD', 'PTS', 'PWT', 'PWW', 'QAK', 'QYQ', 'QTP', 'QJN', 'INH', 'QXQ', 'QYH', 'QVH', 'QBQ', 'QDZ', 'QZK', 'RAH', 'RCG', 'RUQ', 'SBB', 'ORQ', 'OJQ', 'OLH', 'SNQ', 'SQH', 'IMH', 'SLC', 'SCF', 'OQH', 'PPT', 'SND', 'OHH', 'SRH', 'KAH', 'ITH', 'TMK', 'TID', 'PDQ', 'TKX', 'TJH', 'PXT', 'QSL', 'TNN', 'TLS', 'TVW', 'TSW', 'TCH', 'TRZ', 'TEK', 'TZH', 'WEQ', 'WFK', 'WXT', 'VHH', 'WBY', 'WNQ', 'WWP', 'WGH', 'IFH', 'EAQ', 'XPH', 'XRN', 'XAW', 'XOS', 'XIW', 'XSP', 'XDT', 'XAN', 'XWN', 'UUH', 'AIH', 'YGH', 'YDG', 'IIQ', 'EVH', 'URH', 'YGT', 'YXJ', 'YMN', 'YPP', 'UPH', 'ACG', 'YIG', 'YIQ', 'ZJJ', 'ZDP', 'ZDB', 'ZIN', 'ZDH', 'ZEH', 'ZOQ', 'ZTK', 'ZGQ', 'ZSQ', 'ZYN', 'ZUS', 'ZAQ', 'XPF', 'AXL', 'ADF', 'BMP', 'FEP', 'FHP', 'FCP', 'BBY', 'BRT', 'BFQ', 'FZW', 'BVT', 'UKZ', 'FWP', 'FHW', 'FOP', 'GUH', 'KNW', 'FVH', 'COW', 'CBQ', 'CNS', 'CBH', 'CNQ', 'CWT', 'DCZ', 'RDD', 'RWT', 'RGT', 'RMT', 'RTQ', 'DNY', 'DRH', 'OWH', 'DTO', 'DWG', 'DBN', 'KJW', 'DOP', 'FQW', 'IXW', 'EFN', 'FBZ', 'FDT', 'PUH', 'FUW', 'FEW', 'FZQ', 'NZQ', 'FDG', 'FZG', 'GCG', 'VUW', 'GMP', 'GCZ', 'FMW', 'GNN', 'KIW', 'GVW', 'GEZ', 'IMQ', 'FBQ', 'GQT', 'GAZ', 'GBS', 'GAJ', 'STS', 'KQW', 'GNP', 'HNS', 'HFF', 'HUL', 'HPP', 'KDQ', 'HDO', 'HTV', 'HTB', 'COH', 'ENH', 'KGN', 'KAN', 'HNN', 'KXN', 'KAQ', 'HCF', 'KHN', 'FAQ', 'KLQ', 'VLY', 'KMQ', 'IUQ', 'HPV', 'HOH', 'HVZ', 'HPN', 'KRN', 'KSN', 'NYH', 'HLN', 'KNN', 'HEK', 'HYT', 'HWV', 'KNQ', 'NSH', 'PFQ', 'JOL', 'JMP', 'JLS', 'JVK', 'JCS', 'JJH', 'OKH', 'JUS', 'JNJ', 'JWH', 'NRH', 'JDV', 'LOH', 'JXG', 'JOW', 'JBJ', 'PYH', 'JZV', 'QKW', 'KTQ', 'KVW', 'IDZ', 'UCZ', 'LCF', 'NWW', 'ACQ', 'FVW', 'LVO', 'UOQ', 'UQQ', 'INW', 'LLQ', 'LXV', 'KGQ', 'UDP', 'LBN', 'IKW', 'KFW', 'UKQ', 'UDV', 'IVW', 'LDH', 'KRW', 'LBK', 'LEH', 'LNR', 'LSZ', 'LDJ', 'OMH', 'MDN', 'MBJ', 'MBK', 'MBS', 'IUW', 'MSN', 'MYO', 'MZF', 'NEF', 'NDG'] # 出发地简称缩写列表
to_stations = ['NDG', 'NEF', 'MZF', 'MYO', 'MSN', 'IUW', 'MBS', 'MBK', 'MBJ', 'MDN', 'OMH', 'LDJ', 'LSZ', 'LNR', 'LEH', 'LBK', 'LDH', 'KRW', 'IVW', 'UDV', 'UKQ', 'KFW', 'IKW', 'LLQ', 'INW', 'UQQ', 'UOQ', 'LVO', 'FVW', 'ACQ', 'NWW', 'LCF', 'UCZ', 'IDZ', 'KVW', 'KTQ', 'QKW', 'JZV', 'PYH', 'JBJ', 'JOW', 'JXG', 'LOH', 'JDV', 'NRH', 'JWH', 'JNJ', 'JUS', 'OKH', 'JJH', 'JCS', 'JVK', 'JLS', 'JMP', 'JOL', 'PFQ', 'NSH', 'KNQ', 'HWV', 'HYT', 'HEK', 'HLN', 'NYH', 'KXN', 'HNN', 'KAN', 'KGN', 'ENH', 'COH', 'HTB', 'HTV', 'HDO', 'KDQ', 'HPP', 'HUL', 'HFF', 'HNS', 'GNP', 'STS', 'GAJ', 'GBS', 'GAZ', 'GQT', 'FBQ', 'IMQ', 'GEZ', 'GVW', 'KIW', 'GNN', 'FMW', 'GCZ', 'GMP', 'VUW', 'GCG', 'FZG', 'FDG', 'NZQ', 'FZQ', 'FEW', 'FUW', 'PUH', 'FDT', 'FBZ', 'EFN', 'IXW', 'FQW', 'DOP', 'KJW', 'DBN', 'DWG', 'DTO', 'OWH', 'DRH', 'DNY', 'RTQ', 'RMT', 'RGT', 'RWT', 'RDD', 'DCZ', 'CWT', 'CNQ', 'CBH', 'CNS', 'CBQ', 'COW', 'FVH', 'KNW', 'GUH', 'FOP', 'FHW', 'FWP', 'UKZ', 'BVT', 'FZW', 'BFQ', 'BRT', 'BBY', 'FCP', 'FHP', 'FEP', 'BMP', 'ADF', 'AXL', 'XPF', 'ZAQ', 'ZUS', 'ZYN', 'ZSQ', 'ZGQ', 'ZTK', 'ZOQ', 'ZEH', 'ZDH', 'ZIN', 'ZDB', 'ZDP', 'ZJJ', 'YIQ', 'YIG', 'ACG', 'UPH', 'YPP', 'YMN', 'YXJ', 'YGT', 'URH', 'EVH', 'IIQ', 'YDG', 'YGH', 'AIH', 'UUH', 'XWN', 'XAN', 'XDT', 'XSP', 'XIW', 'XOS', 'XAW', 'XRN', 'XPH', 'EAQ', 'IFH', 'WGH', 'WWP', 'WNQ', 'WBY', 'VHH', 'WXT', 'WFK', 'WEQ', 'TZH', 'TEK', 'TRZ', 'TCH', 'TSW', 'TVW', 'TLS', 'TNN', 'QSL', 'PXT', 'TJH', 'TKX', 'PDQ', 'TID', 'TMK', 'ITH', 'KAH', 'SRH', 'OHH', 'SND', 'PPT', 'OQH', 'SCF', 'SLC', 'IMH', 'SQH', 'SNQ', 'OLH', 'OJQ', 'ORQ', 'SBB', 'RUQ', 'RCG', 'RAH', 'QZK', 'QDZ', 'QBQ', 'QVH', 'QYH', 'QXQ', 'INH', 'QJN', 'QTP', 'QYQ', 'QAK', 'PWW', 'PWT', 'PTS', 'PBD', 'PGZ', 'PRT', 'PAW', 'NEH', 'NOQ', 'NNQ', 'NJS', 'NHH', 'NES', 'MFQ', 'MQQ', 'MHQ', 'MNF', 'MBN', 'LQJ', 'LPQ', 'LVS', 'LMH', 'LYT', 'LYK', 'UXP', 'LET', 'LAS', 'LSG', 'USH', 'LIQ', 'UJL', 'LKS', 'UFH', 'LJP', 'LPF', 'KXT', 'KSH', 'JOF', 'JOD', 'JZH', 'JBN', 'JZK', 'EPH', 'JNL', 'EAH', 'JRN', 'EGH', 'JES', 'JWQ', 'JJS', 'VZH', 'HEQ', 'VCH', 'HDY', 'VQH', 'HPD', 'HJS', 'IGW', 'HXT', 'HCN', 'WKW', 'VXN', 'GAT', 'GSS', 'GNQ', 'GYF', 'GAG', 'GMK', 'GGZ', 'GCN', 'FBT', 'FDY', 'FST', 'FQS', 'FHH', 'FIH', 'FAS', 'ECN', 'DIP', 'EWH', 'IAW', 'EXH', 'DYH', 'DYW', 'RUH', 'DWT', 'DRQ', 'RHX', 'LFX', 'DXT', 'UFQ', 'DAG', 'CBP', 'ICQ', 'CXH', 'ESH', 'CPT', 'DAQ', 'CLK', 'CIN', 'BYT', 'BLQ', 'IBQ', 'BWH', 'BNN', 'BDP', 'BEP', 'BMH', 'BWQ', 'ASH', 'AXT', 'ALN', 'ARH', 'ARW', 'ADX', 'ZEK', 'ZJH', 'ZIQ', 'ZHQ', 'ZBK', 'AOQ', 'YUQ', 'YON', 'YWH', 'YAK', 'NUW', 'TWQ', 'HAN', 'YWY', 'XCH', 'XFN', 'XMS', 'XKS', 'EFQ', 'VRH', 'WXH', 'WHH', 'WKK', 'WCN', 'TSP', 'FUP', 'TGP', 'SZN', 'SZH', 'SZQ', 'SNN', 'SYQ', 'SEQ', 'SRG', 'SQF', 'NIW', 'SHD', 'RJG', 'QEH', 'QYS', 'QHX', 'QDK', 'QSW', 'PCW', 'PVD', 'NCW', 'NGH', 'MYW', 'LZD', 'LZZ', 'LLF', 'LYS', 'LCN', 'UAH', 'KNH', 'KFF', 'JZT', 'JFW', 'JUH', 'JAC', 'JLL', 'JJG', 'JBH', 'RNH', 'HXZ', 'HSN', 'EUH', 'HMR', 'HKN', 'GBT', 'GZG', 'GBQ', 'GLZ', 'GBZ', 'FET', 'FJQ', 'FES', 'ESN', 'RXW', 'DLT', 'DFT', 'DDW', 'DHL', 'DUT', 'CZH', 'IYH', 'CEH', 'BXT', 'BTC', 'BDC', 'BIZ', 'BHZ', 'BBH', 'AQH', 'ZZF', 'XNO', 'EAY', 'WMR', 'WHN', 'SBT', 'SYT', 'SJP', 'NNZ', 'NKH', 'NJH', 'NCG', 'LAJ', 'LZJ', 'JGK', 'JNK', 'HZH', 'HGH', 'VUQ', 'HMQ', 'HHC', 'NDC', 'HFH', 'VAB', 'HBB', 'GZQ', 'GIW', 'FYS', 'FZS', 'CWQ', 'CDW', 'CNW', 'ICW', 'CRT', 'CCT', 'TXP', 'TIP', 'TJP', 'SXH', 'AOH', 'SNH', 'SHH', 'GGQ', 'CUW', 'IZQ', 'BXP', 'VNP', 'BJP'] # 目的地简称缩写列表
df_combined = pd.DataFrame() # 创建一个空的DataFrame来保存所有查询结果
for from_station, to_station in zip(from_stations, to_stations):
url = f"https://kyfw.12306.cn/otn/leftTicketPrice/query?leftTicketDTO.train_date={train_date}&leftTicketDTO.from_station={from_station}&leftTicketDTO.to_station={to_station}&leftTicketDTO.ticket_type=1&randCode=stzh"
res = requests.get(url)
data = res.json()
queryLeftNewDTO_list = [item['queryLeftNewDTO'] for item in data['data']]
df = pd.DataFrame(queryLeftNewDTO_list)
df_combined = pd.concat([df_combined, df], ignore_index=True)
df_combined.to_excel("queryLeftNewDTO_combined.xlsx", index=False)
print("已将合并后的数据保存在 queryLeftNewDTO_combined.xlsx 中")

from_stations和to_stations中的成员其实就是我刚刚说的代号,这里有个建议最好把查询时间写成一定范围内的随机数,要不然12306会把你屏蔽,别问我为什么知道,当然,我前面的代码已经写好了

执行后数据会存储在一个excel表格中,大概是这样的:

表格太长了,没截全

第一次写博客,很多没注意的大佬们体谅一下哈,有任何建议也欢迎

爬取12306中全国的列车时刻表和车站信息相关推荐

  1. python爬取12306列车信息自动抢票并自动识别验证码(一)列车数据获取篇

    项目前言 自学python差不多有一年半载了,这两天利用在甲方公司搬砖空闲之余写了个小项目--[12306-tiebanggg-master].注:本项目仅供学习研究,如若侵犯到贵公司权益请联系我第一 ...

  2. 2021最新 python爬取12306列车信息自动抢票并自动识别验证码(三)购票篇

    项目前言 tiebanggg又来更新了,项目--[12306-tiebanggg-master]注:本项目仅供学习研究,如若侵犯到贵公司权益请联系我第一时间进行删除:切忌用于一切非法途径,否则后果自行 ...

  3. 2021最新python爬取12306列车信息自动抢票并自动识别验证码

    项目描述 项目前言 tiebanggg又来更新了,项目--[12306-tiebanggg-master]注:本项目仅供学习研究,如若侵犯到贵公司权益请联系我第一时间进行删除:切忌用于一切非法途径,否 ...

  4. python爬取12306列车信息自动抢票并自动识别验证码(二)selenium登录验证篇

    项目前言 自学python差不多有一年半载了,这两天利用在甲方公司搬砖空闲之余写了个小项目--[12306-tiebanggg-master]注:本项目仅供学习研究,如若侵犯到贵公司权益请联系我第一时 ...

  5. 使用python爬取12306上面所有车次数据

    在爬取12306之前需要做的工作就是: 1,分析请求过程 2,分析是否需要处理cookie 3,编写代码 4,测试爬取网站是否有访问次数限制 5,部署到正式服务器上 这里重点写 如何分析请求过程: 这 ...

  6. Python爬取12306车票信息

    Python3爬取12306车票信息 第一次写爬虫,咱从入门级--12306车票爬取 开始 我们要爬取的信息是https://www.12306.cn/index/上的车票信息 当我们选择出发地和目的 ...

  7. python 爬取12306数据

    学了好久的 java  换个语言试试 就选择了 简单易学的python ,学了一段时间看到别人都在爬取12306网站的数据,我也尝试尝试,发现 12306网站的数据更新太快.返回的json数据变得越来 ...

  8. 爬虫 使用python+requests模块爬取12306网站的车次信息

    用requests模块,爬取12306的车次信息 先看代码 import re import requests import json a=requests.get('https://kyfw.123 ...

  9. python爬取12306_Python爬取12306车次信息代码详解

    详情查看下面的代码: 如果被识别就要添加一个cookie如果没有被识别的话就要一个user-agent就好了.如果出现乱码就设置编码格式为utf-8 #静态的数据一般在elements中(复制文字到s ...

最新文章

  1. 活动报名 | 上交大副教授谢伟迪:视频自监督学习
  2. TCP为什么需要三次握手
  3. WPF-21:WPF实现仿安卓的图案密码键盘(初级)
  4. 默认构造函数的作用(“A”方法没有采用“0”个参数的重载
  5. It's a start!
  6. python中向类中动态添加新特性及删除属性方法
  7. mysql游标的概述_MySQL游标简介
  8. linux的任务计划6,Linux计划任务
  9. MySQL_管理与维护
  10. 新手篇 | K8S配置最佳实践
  11. ggplot2作图详解:标尺(scale)设置
  12. 在inDesign软件中如何覆盖母版页项目?
  13. JavaScript计算器
  14. 入门vue+springboot项目
  15. Exp7 网络欺诈防范 20164323段钊阳
  16. 苹果开发者账号登录的问题
  17. 在Excel表格中如何设置字体随单元格大小变化
  18. 《精通Oracle Database 12c SQL PL/SQL编程(第3版)》代码下载
  19. 解决c3p0连接池异常问题
  20. 甘特图(Gantt chart)

热门文章

  1. 关于论文分两栏的问题
  2. 【AI目标检测】VOC格式数据集转换为DOTA类型数据集
  3. mysql语句大全 新浪博客_经典的MYSQL语句
  4. java毕业设计博物馆交流平台Mybatis+系统+数据库+调试部署
  5. SpringBoot中MBG的使用
  6. linux在什么环境运行,Linux的应用环境
  7. c语言函数time用法,c语言中time函数详解
  8. ZoomIt: 非PPT演示必备辅助软件
  9. PX4垂直起降过程研究总结
  10. 计算机网络:数据链路层的基本概念