python自动抢票
# -*- coding: utf-8 -*- from splinter.browser import Browser from time import sleep import traceback #初始化信息 # 用户名,密码 username = u"用户名" passwd = u"密码" # cookies值得自己去找 starts = u"杭州,HZH" ends = u"黄石,HSN" # 时间格式2016-03-22 dtime = u"2016-03-22" # 车次,选择第几趟,0则从上之下依次点击 order = 0 ###乘客名,如果是自己,则上面有个链接是自己的,会跳转到个人中心,用index[1] #如果乘客不是自己,则用index[0] pa = u"名字" """网址""" ticket_url = "https://kyfw.12306.cn/otn/leftTicket/init" login_url = "https://kyfw.12306.cn/otn/login/init" initmy_url = "https://kyfw.12306.cn/otn/index/initMy12306" def login(): #点击登录,从购票页面调到了登录页面 b.find_by_text(u"登录").click() sleep(3) #给name为loginUserDTO.user_name附上用户名 #也可以用Id查找的方法b.find_by_id('username').fill(username) b.fill("loginUserDTO.user_name", username) sleep(1) #给name为userDTO.password值 b.fill("userDTO.password", passwd) sleep(1) #验证码必须手动输入 print u"等待验证码,自行输入..." #检测页面是否跳转(用户是否输入了验证码并且提交) while True: if b.url != initmy_url: sleep(1) else: break def huoche(): global b b = Browser(driver_name="chrome") #访问12306 b.visit(ticket_url) #查找带登录的字符串,u是避免中文报错 while b.is_text_present(u"登录"): sleep(1) #如果存在调用登录方法 login() if b.url == initmy_url: break #当执行完login方法后,登录成功,继续向下执行 try: print u"购票页面..." # 跳回购票页面 b.visit(ticket_url) # 加载查询信息 b.cookies.add({"_jc_save_fromStation": starts}) b.cookies.add({"_jc_save_toStation": ends}) b.cookies.add({"_jc_save_fromDate": dtime}) b.reload() sleep(2) count = 0 # 循环点击预订 #order=0则从第一班车开始全部依次预订 if order != 0: #如果页面没有跳转到,说明没有抢到票,继续抢票 while b.url == ticket_url: #点击查询进行刷新 b.find_by_text(u"查询").click() count +=1 print u"循环点击查询... 第 %s 次" % count sleep(1) try: #点击预订的那班车 b.find_by_text(u"预订")[order - 1].click() except: print u"还没开始预订" continue else: while b.url == ticket_url: b.find_by_text(u"查询").click() count += 1 print u"循环点击查询... 第 %s 次" % count sleep(1) try: #从第一个开始依次预订 for i in b.find_by_text(u"预订"): i.click() except: print u"还没开始预订" continue sleep(1) #若循环结束了,则选择联系人 b.find_by_text(pa)[0].click() print u"能做的都做了.....不再对浏览器进行任何操作" except Exception as e: print(traceback.print_exc()) if __name__ == "__main__": huoche()