继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

selenium实现12306网站自动抢票

慕标5832272
关注TA
已关注
手记 1071
粉丝 228
获赞 996

这两天一直在搞这个例子,遇到了非常多的困难,总之,学到了很多,竟然忘了记录下来,下次一定注意。

功能是根据时间、地点和自己感兴趣的车次名称,不断筛选出发车信息,直到满足条件,然后点击预定,勾选乘车人身份信息,点击确定,发出铃声提醒人下订单。

# coding:utf-8# author:chengchen# time:2018.8.7 from selenium.webdriver.support.ui import Select from selenium import webdriver from winsound import Beep import time, sys#报错的话,添加以下代码,忽略报错options = webdriver.ChromeOptions()
options.add_experimental_option("excludeSwitches", ["ignore-certificate-errors"])
driver=webdriver.Chrome(chrome_options=options)

driver = webdriver.Chrome()
driver.implicitly_wait(10)

driver.get("https://kyfw.12306.cn/otn/login/init")
driver.find_element_by_id('username').send_keys('18151032084')#为了不泄露密码,就没自动化,需要人工干涉,这部分后面会用cookie保持sessions会话机制。raw_input('登录界面,请输入密码登录后,按回车')

driver.get("https://kyfw.12306.cn/otn/leftTicket/init")`# 输入起始站点和终点fromEle = driver.find_element_by_id('fromStationText')
fromEle.click()
fromEle.clear()
fromEle.send_keys(u'南京\n')

toEle = driver.find_element_by_id('toStationText')
toEle.click()
toEle.clear()
toEle.send_keys(u'镇江\n')

timeSelect = Select(driver.find_element_by_id('cc_start_time'))
timeSelect.select_by_visible_text('06:00--12:00')#找到后天那个元素tomorrow = driver.find_element_by_css_selector('#date_range li:nth-child(3)')

i=0while True:
    i += 1
    isGet = False  # 设置为没有找到
    tomorrow.click()    # 选择二等座有票的车
    xpath = '//*[@id="queryLeftTable"]//td[4][@class]/../td[1]//a'
    interested = ['G7035', 'G7039', 'G1377', 'G7355']
    theTrains = driver.find_elements_by_xpath(xpath)    for one in theTrains:
        name = one.text        if name in interested:
            isGet = True
            print("you yu piao\n" + name)            # 找到当前元素的上层节点
            target = one.find_elements_by_xpath('../../../../../td[last()]')
            firstbutton=target[0]
            firstbutton.click()

            time.sleep(4)

            driver.find_element_by_id('normalPassenger_0').click()
            driver.find_element_by_id('submitOrder_id').click()

            Beep(1500, 2000)
            sys.exit()        if isGet==False:
            print('{%i}轮搜索没有找到'%i)

    time.sleep(5)



作者:Root_123
链接:https://www.jianshu.com/p/8a8dda45ae45


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP