半自動化實現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