自动化抢票 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 请求参数: 查询参数 (直接在链接中就有)
- 安装 requests 模块
- 使用第三方模块: requests
2. 获取数据
获取服务器返回响应数据
- 12306 的请求参数并不是简单的中文字符,而是对应的三字编码,我们需要找到对应的编码
- 对网页分析发现,在一个 js 文件中可以获取
- 在页面最后有 链接
3. 解析数据
提取我们需要的数据内容: 车次相关内容
4. 保存数据
- 字典取值
- 键值对取值: 根据冒号左边的内容 [“键”, 提取冒号右边的内容 [“值”]]
当然,下面我将重点介绍每个步骤的关键点,并附上相应的代码片段。
1. 获取站点编码
关键点:从 12306 的 JS 文件中解析站点的三字码。
代码片段:
2. 用户输入
关键点:提示用户输入起始站、终点站和出发日期,然后转换为 12306 需要的编码。
代码片段:
3. 获取火车票信息
关键点:构建请求 URL,模拟浏览器发送 HTTP 请求获取数据。
代码片段:
4. 打印火车票信息
关键点:解析服务器返回的 JSON 数据,并使用格式化输出。
代码片段:
5. Selenium 自动化
关键点:使用 Selenium 模拟用户在网页上的操作,如填写表单、点击按钮等。
代码片段:
6. 完整代码
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/12111.html