半自動化實現12306搶票

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







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章