欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

python+splinter如何實(shí)現(xiàn)12306網(wǎng)站刷票并自動(dòng)購(gòu)票流程-創(chuàng)新互聯(lián)

這篇文章主要介紹python+splinter如何實(shí)現(xiàn)12306網(wǎng)站刷票并自動(dòng)購(gòu)票流程,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

成都創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括義縣網(wǎng)站建設(shè)、義縣網(wǎng)站制作、義縣網(wǎng)頁(yè)制作以及義縣網(wǎng)絡(luò)營(yíng)銷(xiāo)策劃等。多年來(lái),我們專(zhuān)注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,義縣網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶(hù)以成都為中心已經(jīng)輻射到義縣省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶(hù)的支持與信任!

通過(guò)python+splinter,實(shí)現(xiàn)在12306網(wǎng)站刷票并自動(dòng)購(gòu)票流程(無(wú)法自動(dòng)識(shí)別驗(yàn)證碼)。

此類(lèi)程序只是提高了12306網(wǎng)站的 <查詢(xún)> 刷新頻率(默認(rèn)自動(dòng)查詢(xún)的刷新頻率為5秒)。對(duì)于學(xué)習(xí)splinter感覺(jué)還是不錯(cuò)的,但是想通過(guò)裝個(gè)類(lèi)似刷票程序成功購(gòu)票的 還是多花點(diǎn)錢(qián)升級(jí)升級(jí)硬件設(shè)備,提高提高網(wǎng)速吧。

程序?qū)懙挠悬c(diǎn)亂,隨時(shí)修改ing。

#!/usr/bin/env python3
# encoding: utf-8
 
from splinter.browser import Browser
import time
 
#12306的賬號(hào),密碼
user_name = 'xxxxxxxxxx' #自行修改
pass_word = 'xxxxxxxxxx'
 
# 通過(guò)splinter,登錄12306網(wǎng)站(登錄驗(yàn)證碼需要手動(dòng)驗(yàn)證)
b = Browser(driver_name = 'firefox') # 設(shè)置火狐瀏覽器
b.visit('https://kyfw.12306.cn/otn/leftTicket/init') # 打開(kāi)12306界面
b.find_by_id(u'login_user') # 點(diǎn)擊登錄按鈕
 
b.fill('loginUserDTO.user_name',user_name) # 填寫(xiě)賬號(hào)
b.fill('userDTO.password',pass_word) # 填寫(xiě)密碼
 
# 手動(dòng)填寫(xiě)驗(yàn)證碼并登錄,登錄成功后等待自動(dòng)跳轉(zhuǎn)到購(gòu)票頁(yè)面。
'''
跳轉(zhuǎn)頁(yè)面過(guò)程中:
程序可能會(huì)報(bào)錯(cuò):[WinError 10053] 您的主機(jī)中的軟件中止了一個(gè)已建立的連接。
原因:未知
解決辦法:寫(xiě)一個(gè)循環(huán),程序不停的嘗試鏈接跳轉(zhuǎn)頁(yè)面(總會(huì)成功),成功后跳出循環(huán)。
'''
while True:
  if b.url == 'https://kyfw.12306.cn/otn/index/initMy12306': # 判斷是否登錄成功
    try:
      b.visit('https://kyfw.12306.cn/otn/leftTicket/init') # 訪問(wèn)購(gòu)票頁(yè)面
    except ConnectionAbortedError: #捕捉可能出現(xiàn)的異常,繼續(xù)訪問(wèn)
      b.visit('https://kyfw.12306.cn/otn/leftTicket/init') 
    if b.url == 'https://kyfw.12306.cn/otn/leftTicket/init': # 判斷是否跳轉(zhuǎn)購(gòu)票頁(yè)面成功
      break
 
# 添加、加載cookies信息,查詢(xún)余票。(自動(dòng)添加出發(fā)地、目的地、日期,例如:北京-鄭州)
b.cookies.add({'_jc_save_fromDate':'2018-08-11'}) # 出發(fā)日期
b.cookies.add({'_jc_save_fromStation':u'%u5317%u4EAC%2CBJP'}) # 出發(fā)站信息(北京)
b.cookies.add({'_jc_save_toDate':'2018-08-11'}) # 到達(dá)日期
b.cookies.add({'_jc_save_toStation':u'%u90D1%u5DDE%2CZZF'}) # 目的地信息(鄭州)
b.reload() # 重新加載cookies
b.find_by_text(u'查詢(xún)').click() #點(diǎn)擊查詢(xún)
 
# 添加車(chē)次類(lèi)型
l = ['GC-高鐵/城際','D-動(dòng)車(chē)','Z-直達(dá)','T-特快','K-快速','其他']#在列表里可以去掉不需要的車(chē)次類(lèi)型
for i in l:
  btn = b.find_by_text(i)
  btn.click()
  
# 下拉訂票幫手(此步驟可跳過(guò))  
b.find_by_id(u'show_more').click()
 
 
# 設(shè)置坐席
def The_seat():
 
  '''
  添加坐席后,網(wǎng)站會(huì)自動(dòng)勾選<自動(dòng)提交>、<自動(dòng)查詢(xún)>功能。
  <自動(dòng)查詢(xún)> 默認(rèn)的是5秒刷新一次(慢),所以我們要關(guān)閉此選項(xiàng),提高刷新頻率。
  '''
  seat =['二等座','軟臥','硬臥','硬座','無(wú)座'] #設(shè)置一個(gè)坐席列表
  b.find_by_xpath('/html/body/div[6]/div[5]/div[2]/div[7]/div[2]/span/a').click()#打開(kāi)坐席選擇的菜單窗口
  for i in seat:
    b.find_by_name(i).click() #添加坐席
  b.find_by_xpath('/html/body/div[11]/div[1]/a').click()#關(guān)閉彈窗
  b.find_by_text(u'開(kāi)啟自動(dòng)查詢(xún)').click()# 點(diǎn)擊關(guān)閉<自動(dòng)查詢(xún)>選項(xiàng)(慢)。關(guān)閉自動(dòng)查詢(xún)功能后,自動(dòng)提交功能也會(huì)關(guān)閉。
 
 
# 購(gòu)票 
def Train_ticket_purchase():
  
  The_seat() #設(shè)置坐席
  b.find_by_id(u'show_more').click() # 關(guān)閉訂票幫手(此步驟可跳過(guò))
 
  #查詢(xún)訂票
  while b.url != 'https://kyfw.12306.cn/otn/confirmPassenger/initDc': #以預(yù)訂成功跳轉(zhuǎn)頁(yè)面為判斷條件
    try:
      b.find_by_text(u'查詢(xún)').click() # 點(diǎn)擊查詢(xún)
      if b.is_element_present_by_text(u'預(yù)訂') == True: #判斷是否有<預(yù)訂>
        for i in b.find_by_text(u'預(yù)訂'): # b.fin_by_text(u'預(yù)訂'),返回包含<預(yù)訂>元素的列表,其中有些可以點(diǎn)擊‘預(yù)訂'購(gòu)票,有些‘預(yù)訂'顯灰色無(wú)票狀態(tài),無(wú)法點(diǎn)擊預(yù)訂購(gòu)票的。
          if i.has_class('btn72'): #篩選<預(yù)訂>元素,區(qū)分可以點(diǎn)擊預(yù)訂的和不可以點(diǎn)擊的(可以點(diǎn)擊<預(yù)訂>的元素,都包含屬性class('btn72'))
            i.click()#點(diǎn)擊預(yù)訂購(gòu)票
          
            if b.is_element_present_by_xpath('//*[@id="content_defaultwarningAlert_hearder"]') == True: #可能會(huì)彈窗提示:當(dāng)前時(shí)間不可預(yù)訂
              b.find_by_xpath('//*[@id="gb_closeDefaultWarningWindowDialog_id"]').click() # 關(guān)閉提示彈窗
              print('當(dāng)前時(shí)間不可預(yù)訂,請(qǐng)關(guān)閉程序稍后再運(yùn)行。')
              break
 
            if b.is_element_present_by_xpath('//*[@id="content_defaultwarningAlert_title"]') == True: #可能會(huì)彈窗提示:您選擇的列車(chē)距開(kāi)車(chē)時(shí)間很近了,請(qǐng)確保有足夠的時(shí)間抵達(dá)車(chē)站,并辦理?yè)Q取紙質(zhì)車(chē)票、安全檢查、實(shí)名制驗(yàn)證及檢票等手續(xù),以免耽誤您的旅行。
              b.find_by_xpath('//*[@id="qd_closeDefaultWarningWindowDialog_id"]').click() #關(guān)閉彈窗(注意:關(guān)閉彈窗,但是仍然會(huì)購(gòu)票)
            
            b.find_by_text(u'xxx')[1].click() #自行添加乘車(chē)人名字(注意:登錄賬號(hào)本人的名字元素可能會(huì)有兩個(gè)(一個(gè)賬號(hào),一個(gè)乘車(chē)人),注意區(qū)分開(kāi))
            b.find_by_text(u'提交訂單').click()
 
            #確認(rèn)訂單(不知道為什么 b.find_by_xpath()方法不行。。。。)
            b.find_by_css('html body#body_id.dhtmlx_winviewport.dhtmlx_skin_dhx_terrace div.dhtmlx_window_active div.dhtmlx_wins_body_outer div.dhtmlx_wins_body_inner.dhtmlx_wins_no_header div div#checkticketinfo_id div#content_checkticketinfo_id.up-box.w664 div.up-box-bd.ticket-check div#confirmDiv.lay-btn a#qr_submit_id.btn92s').click()
            print('預(yù)訂成功,退出程序')
            break
          else:
            print('暫時(shí)沒(méi)票,繼續(xù)查詢(xún)中...')
      else:
        print('暫時(shí)沒(méi)票,繼續(xù)查詢(xún)中...')      
    except:
      print('不可預(yù)訂,請(qǐng)稍后再次運(yùn)行程序...')
      break
 
 
if __name__ == '__main__':
  Train_ticket_purchase()

以上是“python+splinter如何實(shí)現(xiàn)12306網(wǎng)站刷票并自動(dòng)購(gòu)票流程”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

分享標(biāo)題:python+splinter如何實(shí)現(xiàn)12306網(wǎng)站刷票并自動(dòng)購(gòu)票流程-創(chuàng)新互聯(lián)
本文地址:http://www.chinadenli.net/article16/dcicgg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管網(wǎng)站導(dǎo)航網(wǎng)站設(shè)計(jì)公司外貿(mào)建站商城網(wǎng)站外貿(mào)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

營(yíng)銷(xiāo)型網(wǎng)站建設(shè)