火車票搶票python代碼公開揭秘!
市場上很多火車票搶票軟件大家應(yīng)該非常熟悉,但很少有人研究具體是怎么實(shí)現(xiàn)的,所以覺得很神秘,其實(shí)很簡單。下面使用Python模擬搶票程序,給大家揭秘?fù)屍钡降资窃趺椿厥隆?/p>

該代碼僅供參考,主要用于大家溝通交流,禁止用于商業(yè)用途。
具體代碼如下,可以修改成自己的12306用戶名賬號:
# -*- coding: utf-8 -*-
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"
starts = u"%u4E0A%u6D77%2CSHH"
ends = u"%u592A%u539F%2CTYV"
dtime = u"2018-01-19"
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"
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"等待驗(yàn)證碼..."
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"購票頁面開始..."
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"循環(huán)點(diǎn)擊查詢..." % count
# sleep(1)
try:
self.driver.find_by_text(u"預(yù)訂")[self.order - 1].click()
except Exception as e:
print e
print u"還沒開始預(yù)訂"
continue
else:
while self.driver.url == self.ticket_url:
self.driver.find_by_text(u"查詢").click()
count += 1
print u"循環(huán)點(diǎn)擊查詢..." % count
# sleep(0.8)
try:
for i in self.driver.find_by_text(u"預(yù)訂"):
i.click()
sleep(1)
except Exception as e:
print e
print u"還沒開始預(yù)訂 %s" %count
continue
print u"開始預(yù)訂..."
# 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"確認(rèn)選座..."
self.driver.find_by_id('qr_submit_id').click()
except Exception as e:
print e
if __name__ == '__main__':
huoche=huoche()
huoche.start()
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Python實(shí)現(xiàn)12306火車票搶票系統(tǒng)
- Python爬蟲實(shí)戰(zhàn)之12306搶票開源
- Python + selenium + requests實(shí)現(xiàn)12306全自動搶票及驗(yàn)證碼破解加自動點(diǎn)擊功能
- python+selenium實(shí)現(xiàn)自動搶票功能實(shí)例代碼
- python+Splinter實(shí)現(xiàn)12306搶票功能
- 一百多行python代碼實(shí)現(xiàn)搶票助手
- python自動12306搶票軟件實(shí)現(xiàn)代碼
- 手把手教你用python搶票回家過年(代碼簡單)
- 春節(jié)到了 教你使用python來搶票回家
相關(guān)文章
Python利用yarl實(shí)現(xiàn)輕松操作url
在諸如網(wǎng)絡(luò)爬蟲、web應(yīng)用開發(fā)等場景中,我們需要利用Python完成大量的url解析、生成等操作。本文為大家介紹了Pythonyarl操作url的方法,需要的可以了解一下2022-10-10
python腳本監(jiān)控logstash進(jìn)程并郵件告警實(shí)例
這篇文章主要介紹了python腳本監(jiān)控logstash進(jìn)程并郵件告警實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04
python協(xié)程之動態(tài)添加任務(wù)的方法
今天小編就為大家分享一篇python協(xié)程之動態(tài)添加任務(wù)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-02-02
Python實(shí)現(xiàn)實(shí)現(xiàn)gltf預(yù)覽圖的示例詳解
隨著3D技術(shù)的不斷發(fā)展,GLTF逐漸成為了Web和移動應(yīng)用程序中最流行的3D文件格式之一,本文將介紹如何使用Python生成GLTF模型的預(yù)覽圖,需要的可以了解下2025-02-02
pycharm部署django項(xiàng)目到云服務(wù)器的詳細(xì)流程
今天重點(diǎn)給大家介紹pycharm部署django項(xiàng)目到云服務(wù)器的詳細(xì)流程,首先大家需要先下載python3.8壓縮包,然后通過一系列命令完成操作,具體實(shí)現(xiàn)方法,跟隨小編一起看看吧2021-06-06

