半自动化实现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







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