12306订票代码--python订票的另类方式
发布时间:2020-12-17 17:31:26 所属栏目:Python 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 #!/usr/bin/env python# -*- encoding:utf-8 -*-'''Created on 2014年12月30日@author: liujichao'''import sysimport loggingfrom splinter import B
以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考 #!/usr/bin/env python # -*- encoding:utf-8 -*- ''' Created on 2014年12月30日 @author: liujichao ''' import sys import logging from splinter import Browser import time logging.getLogger().setLevel(logging.ERROR) reload(sys) sys.setdefaultencoding('utf-8') # @UndefinedVariable browser = Browser() def checkTick(): while True: if int(time.strftime("%H",time.localtime())) in [23,1,2,3,4,5,6]: print "23点到7点不能登录" time.sleep(200) continue pass break pass browser.visit("https://kyfw.12306.cn/otn/login/init") browser.find_by_id("username").fill("用户名") browser.find_by_id("password").fill("密码") browser.find_by_id("randCode").click() while True: while len(browser.find_by_id("randCode").value)<4 or not browser.find_by_id("i-okmypasscode1").visible: time.sleep(1) pass browser.find_by_id("loginSub").click() warnAlert=browser.find_by_id("content_defaultwarningAlert_id") if len(warnAlert)!=0 and warnAlert.visible: browser.find_by_id("qd_closeDefaultWarningWindowDialog_id").click() browser.execute_script('''refreshImg('login','sjrand');''') browser.find_by_id("randCode").click() continue pass break pass while browser.url !="https://kyfw.12306.cn/otn/index/initMy12306": print browser.url time.sleep(1) pass browser.visit('https://kyfw.12306.cn/otn/leftTicket/init') #browser.fill('kw','splinter - python acceptance testing for web applications') #browser.execute_script("$('body').empty()") #print browser.find_by_id("login_user") #browser.find_by_id("login_user").click() #print browser.cookies() browser.find_by_id("fromStationText").click() browser.execute_script('''$("#ul_list1 > li:nth-child(1)").click(); ''') browser.find_by_id("toStationText").click() browser.execute_script(''' $("#nav_list3").click(); $("a.cityflip:nth-child(1)").click(); $("#ul_list3 > li:nth-child(21)").click(); ''') browser.find_by_value("G").check() #browser.find_by_id("train_date").click() #time.sleep(10) browser.execute_script(''' setInterval(function(){ $.ajax({ type: 'post',url: '/otn/login/checkUser',data: { },beforeSend: function (c) { c.setRequestHeader('If-Modified-Since','0'); c.setRequestHeader('Cache-Control','no-cache') },success: function (e) { if (!e.data.flag) { location.href="https://kyfw.12306.cn/otn/login/init"; } } }); },2000); ''') while True: if browser.url=="https://kyfw.12306.cn/otn/login/init": #被踢了 print "被踢了" raise Exception("被踢") pass browser.execute_script('''$("#train_date").val("2015-02-18");''') browser.find_by_id("query_ticket").click() browser.execute_script("CLeftTicketUrl = 'leftTicket/queryT?_r="+str(time.time())+"';") browser.execute_script('''$("#train_date").val("2015-02-18");''') warnAlert=browser.find_by_id("content_defaultwarningAlert_id") if len(warnAlert)!=0: browser.find_by_id("qd_closeDefaultWarningWindowDialog_id").click() pass browser.execute_script(''' iflagt=false; $('#queryLeftTable tr').each(function () { trId = $(this).attr('id'); if (/^ticket/.test(trId)) { tid=trId.replace("ticket_",""); tranCode=$("#"+trId+"_train").find("a").text() if("G655,G6741,G67,G517,G491,".indexOf(tranCode+",")!=-1){ //二等座位 ZEtxt=$("#ZE_"+tid).text(); zcount=0; try { zcount=parseInt(ZEtxt) } catch (e) {zcount=0;} console.log(ZEtxt); txtInfo=$("#"+trId+">.no-br").text() if((ZEtxt=="有" || zcount>1) && txtInfo!="23:00-07:00系统维护时间"){ $(this).find(".btn72").click(); iflagt=true; return false; } } } }); ''') if browser.evaluate_script("iflagt;"): break pass else: print "无" pass time.sleep(3) pass while browser.url !="https://kyfw.12306.cn/otn/confirmPassenger/initDc": print browser.url time.sleep(1) pass browser.find_by_id("gd").click() browser.find_by_id("normalPassenger_0").check() browser.find_by_id("normalPassenger_24").check() browser.find_by_id("randCode").click() while len(browser.find_by_id("randCode").value)<4: time.sleep(1) pass browser.is_element_not_present_by_id(id,wait_time=None) while not browser.find_by_id("checkticketinfo_id").visible: time.sleep(0.5) pass browser.find_by_id("qr_submit_id").click() #browser.find_by_id("fromStation").fill("BXP") #browser.find_by_id("train_date").fill("BXP") #browser.find_by_id("query_ticket").click() #print browser.html print browser.cookies.all() pass if __name__ == '__main__': while True: try: checkTick() except Exception,e: browser.quit() browser = Browser() print e pass pass pass 以上内容由PHP站长网【52php.cn】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |