Python爬虫实战:获取12306特定日期、城市车票信息,并做数据分析以供出行参考

news/2025/2/22 15:54:31

注意:以下内容仅供技术研究,请遵守目标网站的robots.txt规定,控制请求频率避免对目标服务器造成过大压力!

1. 核心思路

  • 需求:获取明天(2025 年 2 月 21 日)从北京到上海的车次、票价、出发时间、硬卧二等卧信息,并保存到 CSV 文件,然后分析出价格最低的 10 趟车次。
  • 目标网站:12306.cn是一个铁路票务网站,有反爬虫机制,需要处理请求头、验证码等问题。同时,其数据接口可能需要进行参数分析。
  • 获取车站代码:通过12306的接口获取北京和上海的车站电报码。

  • 构造请求参数:设置出发地、目的地、日期等信息。

  • 获取车次列表:调用12306的余票查询接口,解析车次基本信息。

  • 查询票价信息:针对每个车次,调用票价查询接口获取硬卧/二等卧价格。

  • 数据存储:使用csv模块将获取到的车次信息和票价保存到CSV文件。

  • 数据分析:使用pandas库读取CSV数据,清洗筛选出硬卧二等卧价格数据,排序后取价格最低的 10 趟车次。

2. 数据获取

  • 请求 URL:需要找到 12306 的车次查询接口,通常需要携带出发地、到达地、出发日期等参数。
  • 请求头:设置合适的请求头,模拟浏览器行为,避免被反爬虫机制拦截。
  • 处理验证码:12306 会有验证码机制,需要使用打码平台或人工识别。
  • 解析数据:使用requests库发送请求,使用json模块解析返回的 JSON 数据。
  • 车站代码解析:通过JS接口获取全国车站电报码,正则解析station_name.js,构建{城市名:电报码}字典。
  • 车次列表获取:调用余票查询接口leftTicket/query,需动态解析返回数据字段索引(如出发时间在数组第8位)。
  • 票价深度抓取:针对每个车次单独请求票价接口,依赖train_noseat_types参数,需关联车次基础数据。
  • 数据持久化:使用csv模块处理中文编码问题,字段顺序优化,保存为CSV文件。
  • 票价字段映射表(常见座位类型)

座位类型 接口字段 说明</

http://www.niftyadmin.cn/n/5862486.html

相关文章

Java四大框架深度剖析:MyBatis、Spring、SpringMVC与SpringBoot

目录 前言&#xff1a; 一、MyBatis框架 1. 概述 2. 核心特性 3. 应用场景 4. 示例代码 二、Spring框架 1. 概述 2. 核心模块 3. 应用场景 4. 示例代码 三、SpringMVC框架 1. 概述 2. 核心特性 3. 应用场景 4. 示例代码 四、SpringBoot框架 1. 概述 2. 核心…

基于COSTAR模型的内容创作:如何用框架提升写作质量

目录 前言1. Context&#xff08;上下文&#xff09;&#xff1a;理解背景&#xff0c;奠定写作基础1.1 何为上下文1.2 上下文的作用1.3 案例解析 2. Objective&#xff08;目标&#xff09;&#xff1a;明确写作方向&#xff0c;避免跑题2.1 确立目标2.2 如何设定目标2.3 案例…

【电子通知】案例:26AWG*3C OD=3.8线缆的含义是什么?

在看线缆图纸时&#xff0c;有时候会发现标识&#xff1a;26AWG*3C OD3.8&#xff0c;那这个参数是什么意思呢&#xff1f; 首先我们要先知道线缆规格的表示方法&#xff0c;一般来说&#xff0c;线缆规格按以下方式标注&#xff1a; 线规&#xff1a;表示导线的直径或截面积&a…

DeepSeek掘金——SpringBoot 调用 DeepSeek API 快速实现应用开发

Spring Boot 实现 DeepSeek API 调用 1. 项目依赖 在 pom.xml 中添加以下依赖: <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-webflux</artifactId></dependency>&l…

非线性最小二乘拟合问题

引入 回顾经典的SLAM模型&#xff0c;由观测方程和运动方程组成&#xff1a; { x k f ( x k − 1 , u k ) w k z k j h ( y j , x k ) v k \begin{equation} \left\{ \begin{aligned} & x_kf(x_{k-1},u_k) w_k\\ & z_k^{j} h(y_j,x_k)v_k \end{aligned} \right.…

算法菜鸡备战3月2日传智杯省赛----0221

2209. 用地毯覆盖后的最少白色砖块 - 力扣&#xff08;LeetCode&#xff09; 力扣每日一题 class Solution { public:// 白色最少 黑色最多int minimumWhiteTiles(string floor, int numCarpets, int carpetLen) {int n floor.size();// 记忆化搜索vector memo(n 1, vector&…

DeepSeek写俄罗斯方块手机小游戏

DeepSeek写俄罗斯方块手机小游戏 提问 根据提的要求&#xff0c;让DeepSeek整理的需求&#xff0c;进行提问&#xff0c;内容如下&#xff1a; 请生成一个包含以下功能的可运行移动端俄罗斯方块H5文件&#xff1a; 核心功能要求 原生JavaScript实现&#xff0c;适配手机屏幕 …

BGP配置华为——路径优选验证

实验拓扑 实验要求 实现通过修改AS-Path属性来影响路径选择实现通过修改Local_Preference属性来影响路径选择实现通过修改MED属性来影响路径选择实现通过修改preferred-value属性来影响路径选择 实验配置与效果 1.改名与IP配置 2.as300配置OSPF R3已经学到R2和R4的路由 3.…