为了账号安全,请及时绑定邮箱和手机立即绑定

selenium实现12306网站自动抢票

标签:
Html/CSS

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

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

# 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


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消