python编写代码购买飞机票_12306订票代码--python订票的另类方式

本文提供了一段Python代码示例,用于自动化登录12306官网并进行火车票查询及预订操作。代码中包含了登录、选择出发地、目的地、车次类型、日期以及购票流程。
摘要由CSDN通过智能技术生成

下面是编程之家 jb51.cc 通过网络收集整理的代码片段。

编程之家小编现在分享给大家,也给大家做个参考。

#!/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

以上是编程之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值