python+selenium实现12306模拟火车票的查询及预订

2024-01-15 02:36

本文主要是介绍python+selenium实现12306模拟火车票的查询及预订,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

python+selenium实现12306模拟火车票的查询及预订:

线性代码实现流程,完整代码如下:

# coding = utf-8from datetime import date, timedelta
from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep# 以下为定义函数部分,其目的是返回今天后的第n天后的日期,格式为“2022-03-28”
def date_n(n):return str((date.today() + timedelta(days=int(n))).strftime('%Y-%m-%d'))# 以下变量用于定义出发城市和到达城市
from_station, to_station = '成都', '重庆'# 以下变量为tomorrow变量
tomorrow = date_n(1)
print(tomorrow)# 打开chrome浏览器
driver = webdriver.Chrome()
# 设置浏览器最大化
driver.maximize_window()
# 打开携程网火车票查询页面
driver.get('https://www.12306.cn/index/')# 定位出发城市和到达城市的页面元素
# 输入出发城市
driver.find_element(By.XPATH, '//input[@id="fromStationText"]').click()
driver.find_element(By.XPATH, '//input[@id="fromStationText"]').send_keys(from_station)
driver.find_element(By.XPATH, '//div[@id="citem_2"]').click()
# 输入到达城市
driver.find_element(By.XPATH, '//input[@id="toStationText"]').click()
driver.find_element(By.XPATH, '//input[@id="toStationText"]').send_keys(to_station)
driver.find_element(By.XPATH, '//div[@id="citem_1"]').click()
sleep(2)
# 输入出发时间
driver.find_element(By.XPATH, '//input[@id="train_date"]').clear()
driver.find_element(By.XPATH, '//input[@id="train_date"]').send_keys(tomorrow)
sleep(2)
# 点击查询
driver.find_element(By.XPATH, '//a[@id="search_one"]').click()
sleep(2)
# 切换到新窗口
driver.switch_to.window(driver.window_handles[1])
# 点击D2244车次的预订
# driver.find_element(By.XPATH, '//a[@class="btn72"][1]').click()
driver.find_element(By.XPATH, '//tr[starts-with(@id,"ticket_76000D22440N_01_06")]/td/a').click()
sleep(2)
'''账号登录'''
# 输入用户名
driver.find_element(By.ID, 'J-userName').send_keys('qaws12342')
# 输入密码
driver.find_element(By.ID, 'J-password').send_keys('qwedsa123')# 关闭浏览器
driver.quit()

这篇关于python+selenium实现12306模拟火车票的查询及预订的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/607364

相关文章

Spring AI 实现 STDIO和SSE MCP Server的过程详解

《SpringAI实现STDIO和SSEMCPServer的过程详解》STDIO方式是基于进程间通信,MCPClient和MCPServer运行在同一主机,主要用于本地集成、命令行工具等场景... 目录Spring AI 实现 STDIO和SSE MCP Server1.新建Spring Boot项目2.a

Python使用Reflex构建现代Web应用的完全指南

《Python使用Reflex构建现代Web应用的完全指南》这篇文章为大家深入介绍了Reflex框架的设计理念,技术特性,项目结构,核心API,实际开发流程以及与其他框架的对比和部署建议,感兴趣的小伙... 目录什么是 ReFlex?为什么选择 Reflex?安装与环境配置构建你的第一个应用核心概念解析组件

Python将字符串转换为小写字母的几种常用方法

《Python将字符串转换为小写字母的几种常用方法》:本文主要介绍Python中将字符串大写字母转小写的四种方法:lower()方法简洁高效,手动ASCII转换灵活可控,str.translate... 目录一、使用内置方法 lower()(最简单)二、手动遍历 + ASCII 码转换三、使用 str.tr

Python处理超大规模数据的4大方法详解

《Python处理超大规模数据的4大方法详解》在数据的奇妙世界里,数据量就像滚雪球一样,越变越大,从最初的GB级别的小数据堆,逐渐演变成TB级别的数据大山,所以本文我们就来看看Python处理... 目录1. Mars:数据处理界的 “变形金刚”2. Dask:分布式计算的 “指挥家”3. CuPy:GPU

Python多进程、多线程、协程典型示例解析(最新推荐)

《Python多进程、多线程、协程典型示例解析(最新推荐)》:本文主要介绍Python多进程、多线程、协程典型示例解析(最新推荐),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定... 目录一、multiprocessing(多进程)1. 模块简介2. 案例详解:并行计算平方和3. 实现逻

Spring Boot拦截器Interceptor与过滤器Filter深度解析(区别、实现与实战指南)

《SpringBoot拦截器Interceptor与过滤器Filter深度解析(区别、实现与实战指南)》:本文主要介绍SpringBoot拦截器Interceptor与过滤器Filter深度解析... 目录Spring Boot拦截器(Interceptor)与过滤器(Filter)深度解析:区别、实现与实

C#实现访问远程硬盘的图文教程

《C#实现访问远程硬盘的图文教程》在现实场景中,我们经常用到远程桌面功能,而在某些场景下,我们需要使用类似的远程硬盘功能,这样能非常方便地操作对方电脑磁盘的目录、以及传送文件,这次我们将给出一个完整的... 目录引言一. 远程硬盘功能展示二. 远程硬盘代码实现1. 底层业务通信实现2. UI 实现三. De

Python对PDF书签进行添加,修改提取和删除操作

《Python对PDF书签进行添加,修改提取和删除操作》PDF书签是PDF文件中的导航工具,通常包含一个标题和一个跳转位置,本教程将详细介绍如何使用Python对PDF文件中的书签进行操作... 目录简介使用工具python 向 PDF 添加书签添加书签添加嵌套书签Python 修改 PDF 书签Pytho

SpringBoot后端实现小程序微信登录功能实现

《SpringBoot后端实现小程序微信登录功能实现》微信小程序登录是开发者通过微信提供的身份验证机制,获取用户唯一标识(openid)和会话密钥(session_key)的过程,这篇文章给大家介绍S... 目录SpringBoot实现微信小程序登录简介SpringBoot后端实现微信登录SpringBoo

使用Vue-ECharts实现数据可视化图表功能

《使用Vue-ECharts实现数据可视化图表功能》在前端开发中,经常会遇到需要展示数据可视化的需求,比如柱状图、折线图、饼图等,这类需求不仅要求我们准确地将数据呈现出来,还需要兼顾美观与交互体验,所... 目录前言为什么选择 vue-ECharts?1. 基于 ECharts,功能强大2. 更符合 Vue