基于Python 的京东秒杀 火车票脚本

基于Python 的京东秒杀 火车票脚本

摘要

在购买京东商品的时候,总是觉得等的太久,突然想想,要不,自己写个抢单的脚本,于是,有了这篇博文,这里来分享下自己的心得。

原理介绍

客服端不断向服务器,发送自己的账号和密码,满足抢单要求,抢购。


运行环境

  • 浏览器驱动 ChromeDriver
  • Python 3.5
  • Splinter 执行:pip install splinter 安装 Splinter即可

抢单脚本

京东抢单脚本

#-*- coding:utf-8 -*-
#京东抢单脚本
from splinter.browser import Browser
import datetime
import time

#登录页
def login(b):  #登录京东
    b.click_link_by_text("你好,请登录")
    time.sleep(3)
    b.fill("loginname","account*****")  #填写账户
    b.fill("nloginpwd","passport*****") #填写密码
    b.find_by_id("loginsubmit").click()
    time.sleep(3)
    return b

#订单页
def loop(b):  #循环点击
    try:
        if b.title=="订单结算页 -京东商城":
            b.find_by_text("保存收货人信息").click()
            b.find_by_text("保存支付及配送方式").click()
            b.find_by_id("order-submit").click()
            return b
        else:  #多次抢购操作后,有可能会被转到京东首页,所以要再打开手机主页
            b.visit("https://item.jd.com/3995560.html")
            b.find_by_id("choose-btn-qiang").click()
            time.sleep(10)
            loop(b)  #递归操作
    except Exception as e: #异常情况处理,以免中断程序
        b.reload()  #重新刷新当前页面,此页面为订单提交页
        time.sleep(2)
        loop(b)  #重新调用自己


b=Browser(driver_name="chrome") #打开浏览器
b.visit("http://item.jd.com/2707976.html")
login(b)
b.find_by_id("choose-btn-qiang").click() #找到抢购按钮,点击
time.sleep(10)  #等待10sec
while True:
    loop(b)
    if b.is_element_present_by_id("tryBtn"): #订单提交后显示“再次抢购”的话
        b.find_by_id("tryBtn").click()  #点击再次抢购,进入读秒5,跳转订单页
        time.sleep(6.5)
    elif b.title=="订单结算页 -京东商城": #如果还在订单结算页
        b.find_by_id("order-submit").click() 
    else:
        print('恭喜你,抢购成功')
        break

12306 抢票脚本

#12306秒抢Python代码
from splinter.browser import Browser
x = Browser(driver_name="chrome")
url = “https://kyfw.12306.cn/otn/leftTicket/init”
x = Browser(driver_name="chrome")
x.visit(url)
#填写登陆账户、密码
x.find_by_text(u"登录").click()
x.fill("loginUserDTO.user_name","your login name")
x.fill("userDTO.password","your password")
#填写出发点目的地
x.cookies.add({"_jc_save_fromStation":"%u4E0A%u6D77%2CSHH"})
x.cookies.add({"_jc_save_fromDate":"2016-01-20"})
x.cookies.add({u'_jc_save_toStation':'%u6C38%u5DDE%2CAOQ'})
#加载查询
x.reload()
x.find_by_text(u"查询").click()
#预定
x.find_by_text(u"预订")[1].click()
#选择乘客
x.find_by_text(u"@@@")[1].click()
while True:
        print('恭喜你,抢购成功')
        break

链接推荐:[http://blog.csdn.net/u013042248/article/details/53966185]
参考链接:[https://zhuanlan.zhihu.com/p/25214682]

你可能感兴趣的:(Python-术)