python抢火车票12306代码
时间: 2023-12-25 20:29:40 浏览: 156
抢火车票的代码可以使用Python的网络请求库和自动化测试库来实现。以下是一个简单的示例代码:
```python
import requests
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# 设置浏览器驱动路径
driver_path = 'your_driver_path'
# 初始化浏览器驱动
driver = webdriver.Chrome(driver_path)
# 打开12306网站
driver.get('https://www.12306.cn/index/')
# 等待登录按钮加载完成
login_btn = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, 'loginSub'))
)
# 点击登录按钮
login_btn.click()
# 输入用户名和密码
username_input = driver.find_element(By.ID, 'username')
password_input = driver.find_element(By.ID, 'password')
username_input.send_keys('your_username')
password_input.send_keys('your_password')
# 等待验证码输入框加载完成
captcha_input = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, 'captcha-input'))
)
# 输入验证码
captcha = input('请输入验证码:')
captcha_input.send_keys(captcha)
# 提交登录表单
password_input.send_keys(Keys.ENTER)
# 等待车票查询页面加载完成
search_btn = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, 'search_one'))
)
# 输入出发地、目的地和日期
from_station_input = driver.find_element(By.ID, 'fromStationText')
to_station_input = driver.find_element(By.ID, 'toStationText')
date_input = driver.find_element(By.ID, 'train_date')
from_station_input.clear()
to_station_input.clear()
date_input.clear()
from_station_input.send_keys('北京')
to_station_input.send_keys('上海')
date_input.send_keys('2022-01-01')
# 提交查询表单
search_btn.click()
# 等待查询结果加载完成
result_table = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, 'queryLeftTable'))
)
# 获取车次信息
train_info = result_table.text
# 处理车次信息,找到符合条件的车次并进行抢票操作
# ...
# 关闭浏览器
driver.quit()
```
请注意,这只是一个简单的示例代码,实际的抢票过程可能会更加复杂,需要根据具体情况进行调整和完善。另外,为了避免被12306网站检测到机器人行为,可能需要使用一些反爬虫技术,例如使用代理IP、设置请求头等。
阅读全文