半自动化实现12306抢票
from selenium import webdriver
# 处理下拉框元素
from selenium.webdriver.support.select import Select
# 调用机器喇叭发出蜂鸣声
from winsound import Beep
import time
driver = webdriver.Chrome()
driver.get('https://kyfw.12306.cn/otn/leftTicket/init')
driver.maximize_window()
driver.implicitly_wait(10)
# 输入始发地
star_city = driver.find_element_by_id('fromStationText')
star_city.click()
star_city.clear()
star_city.send_keys('XXX\n')
# 输入目的地
end_city = driver.find_element_by_id('toStationText')
end_city.click()
end_city.clear()
end_city.send_keys('XXX\n')
# 选择乘车时间
start_time = Select(driver.find_element_by_id('cc_start_time'))
start_time.select_by_index(0)
# 选择乘车日期
# driver.find_element_by_css_selector('#date_range > ul > li:nth-child(17)').click()
# 输入日期
star_day = driver.find_element_by_id('date_icon_1')
star_day.click()
day = driver.find_elements_by_css_selector(".cell")
day[44].click()
driver.find_element_by_id('query_ticket').click()
time.sleep(3)
favorite =["XXX",XXX"]
# 获取有票的车次
var = 0
# 无票则,执行100次循环
while var < 100:
xpth = '//tbody[@id="queryLeftTable"]//td[4][@class]/../td[1]//a'
train_list = driver.find_elements_by_xpath(xpth)
var = var + 1
print(var)
for train in train_list:
train_numb = train.text
if train_numb not in favorite:
print("没有票,请等待。。。")
else:
print("有票!!!",train_numb)
# 点击预定
targe = train.find_elements_by_xpath('../../../../../td[13]/a')[0]
targe.click()
time.sleep(3)
# 选择乘客
driver.find_element_by_id('normalPassenger_0').click()
# 提交订单
driver.find_element_by_id('submitOrder_id').click()
time.sleep(2)
# 选择座位
driver.find_element_by_xpath('//*[@id="erdeng1"]/ul[2]/li[2]').click()
# 提交乘客信息
# driver.find_element_by_id('qr_submit_id').click()
print("预定成功")
# 第一个参数声音的大小,第二个参数声音的持续时间(1000=1秒)
Beep(3000,3000)
break