跳转到主内容
极星编程网:以代码为星,赴技术山海!

python+splinter自动刷新抢票功能

抢票脚本,python +splinter自动刷新抢票,可以成功抢到(依赖自己的网络环境太厉害,还有机器的好坏),但是感觉不是很完美。

有大神请指导完善一下(或者有没有别的好点的思路),不胜感谢。

# -*- coding: utf-8 -*-"""@author: liuyw"""from splinter.browser import Browser from time import sleep import traceback import time, sys

class huoche(object):"""docstring for huoche"""driver_name=''executable_path=''#用户名,密码username = u"xxx@qq.com"passwd = u"xxxx"# cookies值得自己去找, 下面两个分别是上海, 太原南starts = u"%u4E0A%u6D77%2CSHH"ends = u"%u592A%u539F%2CTYV"# 时间格式2018-01-19 dtime = u"2018-01-19"# 车次,选择第几趟,0则从上之下依次点击order = 0###乘客名users = [u"xxx",u"xxx"]##席位xb = u"二等座"pz=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"buy="https://kyfw.12306.cn/otn/confirmPassenger/initDc"login_url='https://kyfw.12306.cn/otn/login/init'def __init__(self):self.driver_name='chrome'self.executable_path='/usr/local/bin/chromedriver'

def login(self):self.driver.visit(self.login_url) self.driver.fill("loginUserDTO.user_name", self.username)# sleep(1) self.driver.fill("userDTO.password", self.passwd) print u"等待验证码,自行输入..."while True:if self.driver.url != self.initmy_url:sleep(1) else:break

def start(self):self.driver=Browser(driver_name=self.driver_name,executable_path=self.executable_path) self.driver.driver.set_window_size(1400, 1000) self.login()# sleep(1) self.driver.visit(self.ticket_url) try:print u"购票页面开始..."# sleep(1)# 加载查询信息self.driver.cookies.add({"_jc_save_fromStation": self.starts}) self.driver.cookies.add({"_jc_save_toStation": self.ends}) self.driver.cookies.add({"_jc_save_fromDate": self.dtime})

self.driver.reload()

count=0 if self.order!=0:while self.driver.url==self.ticket_url:self.driver.find_by_text(u"查询").click() count += 1 print u"循环点击查询... 第 %s 次" % count# sleep(1) try:self.driver.find_by_text(u"预订")[self.order - 1].click() except Exception as e:print e print u"还没开始预订"continue else:while self.driver.url == self.ticket_url:self.driver.find_by_text(u"查询").click() count += 1 print u"循环点击查询... 第 %s 次" % count# sleep(0.8) try:for i in self.driver.find_by_text(u"预订"):i.click() sleep(1) except Exception as e:print e print u"还没开始预订 %s" %count continue print u"开始预订..."# sleep(3)# self.driver.reload() sleep(1) print u'开始选择用户...'for user in self.users:self.driver.find_by_text(user).last.click()

print u"提交订单..."sleep(1)# self.driver.find_by_text(self.pz).click()# self.driver.find_by_id('').select(self.pz)# # sleep(1)# self.driver.find_by_text(self.xb).click()# sleep(1) self.driver.find_by_id('submitOrder_id').click()# print u"开始选座..."# self.driver.find_by_id('1D').last.click()# self.driver.find_by_id('1F').last.click()

sleep(1.5) print u"确认选座..."self.driver.find_by_id('qr_submit_id').click()

except Exception as e:print e

if __name__ == '__main__':huoche=huoche() huoche.start()以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

您可能感兴趣的文章:教你用Python来制作一个自动抢票的脚本小程序基于Python实现火车票抢票软件一款开源的Python一键抢票神器详细配置python爬虫实现最新12306抢票python3显式变量类型typing的实现Python爬虫 12306抢票开源代码过程详解python并发编程多进程 模拟抢票实现过程Python实现12306火车票抢票系统python+Splinter实现12306抢票功能一百多行python代码实现抢票助手Python编写一个多线程的12306抢票程序的示例

相关文章