python自动抢票的原理_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()

原文:http://www.cnblogs.com/anxiaoyu/p/6551250.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值