当前位置:网站首页 > 技术博客 > 正文

自动抢票成功率高吗



自动化抢票 12306

1. 明确需求

明确采集的网站以及数据内容

  • 网址: https://kyfw.12306.cn/otn/leftTicket/init
  • 数据: 车次相关信息
2. 抓包分析

通过浏览器开发者工具分析对应的数据位置

  • 打开开发者工具
    • F12 或鼠标右键点击检查
  • 刷新网页
    • 点击下一页/下滑网页页面/点击搜索/查询按钮
    • 让网页相关数据内容加载出来 (整个网站数据内容重新加载一遍)
  • 通过关键字搜索找到对应数据位置
    • 需要什么数据就搜什么

数据包地址: https://kyfw.12306.cn/otn/leftTicket/query?leftTicketDTO.train_date=2024-09-06&leftTicketDTO.from_station=IZQ&leftTicketDTO.to_station=SNQ&purpose_codes=ADULT

3. 代码实现步骤
1. 发送请求

模拟浏览器对于 url 地址发送请求

  • 模拟浏览器
    • 可以直接复制,使用请求标头中参数内容
    • 去哪里找: 开发者工具 -> 网络 -> 点击对应数据包 -> 标头 -> 请求标头(参数)
    • 怎么写: 使用字典接受数据内容 (构建完整的键值对)
  • 请求网址
    • 通过抓包分析找到链接地址,直接复制即可
  • 发送请求
    • 使用第三方模块: requests
      • 安装 requests 模块
        • win+r 输入 cmd 点击确定,输入安装命令:
      • 导入 requests 模块
      • 请求方法: 开发者工具 -> 网络 -> 点击对应数据包 -> 标头 -> 常规
      • GET 请求参数: 查询参数 (直接在链接中就有)
2. 获取数据

获取服务器返回响应数据

  • 12306 的请求参数并不是简单的中文字符,而是对应的三字编码,我们需要找到对应的编码
    • 对网页分析发现,在一个 js 文件中可以获取
    • 在页面最后有 链接
3. 解析数据

提取我们需要的数据内容: 车次相关内容

4. 保存数据
  • 字典取值
    • 键值对取值: 根据冒号左边的内容 [“键”, 提取冒号右边的内容 [“值”]]

当然,下面我将重点介绍每个步骤的关键点,并附上相应的代码片段。

1. 获取站点编码

关键点:从 12306 的 JS 文件中解析站点的三字码。

代码片段:

 

2. 用户输入

关键点:提示用户输入起始站、终点站和出发日期,然后转换为 12306 需要的编码。

代码片段:

 

3. 获取火车票信息

关键点:构建请求 URL,模拟浏览器发送 HTTP 请求获取数据。

代码片段:

 

4. 打印火车票信息

关键点:解析服务器返回的 JSON 数据,并使用格式化输出。

代码片段:

 

5. Selenium 自动化

关键点:使用 Selenium 模拟用户在网页上的操作,如填写表单、点击按钮等。

代码片段:

 

6. 完整代码


                            

  • 上一篇: 计数排序算法图解
  • 下一篇: 终端介绍
  • 版权声明


    相关文章:

  • 计数排序算法图解2025-01-18 22:30:01
  • 积分电路输出波形图2025-01-18 22:30:01
  • malloc -12025-01-18 22:30:01
  • 监控视频服务器2025-01-18 22:30:01
  • 新闻管理系统javaweb2025-01-18 22:30:01
  • 终端介绍2025-01-18 22:30:01
  • springboot配置文件yml和properties区别2025-01-18 22:30:01
  • java匿名内部类详解2025-01-18 22:30:01
  • 代码对比工具使用2025-01-18 22:30:01
  • halcon霍夫变换2025-01-18 22:30:01