python+splinterは12306ウェブサイトで切符を決済して自動で切符を買う流れを実現します。


python+splinterを通じて、12306サイトで切符を決済して自動で切符を買うプロセスを実現します。
このようなプログラムは12306ウェブサイトの「クエリー」リフレッシュ頻度を上げただけです。splinterを勉強するのはいいと思いますが、カード決済のような手続きをして切符を買うことに成功したいです。 やはり多くお金を使ってハードウエアの設備をアップグレードして、ネットのスピードを高めるようにしましょう。
プログラムがちょっと乱れていますので、いつでも修正してください。

#!/usr/bin/env python3
# encoding: utf-8
 
from splinter.browser import Browser
import time
 
#12306   ,  
user_name = 'xxxxxxxxxx' #    
pass_word = 'xxxxxxxxxx'
 
#   splinter,  12306  (           )
b = Browser(driver_name = 'firefox') #        
b.visit('https://kyfw.12306.cn/otn/leftTicket/init') #   12306  
b.find_by_id(u'login_user') #       
 
b.fill('loginUserDTO.user_name',user_name) #     
b.fill('userDTO.password',pass_word) #     
 
#           ,                。
'''
       :
       :[WinError 10053]                    。
  :  
    :     ,             (    ),       。
'''
while True:
  if b.url == 'https://kyfw.12306.cn/otn/index/initMy12306': #         
    try:
      b.visit('https://kyfw.12306.cn/otn/leftTicket/init') #       
    except ConnectionAbortedError: #         ,    
      b.visit('https://kyfw.12306.cn/otn/leftTicket/init') 
    if b.url == 'https://kyfw.12306.cn/otn/leftTicket/init': #             
      break
 
#   、  cookies  ,    。(       、   、  ,  :  -  )
b.cookies.add({'_jc_save_fromDate':'2018-08-11'}) #     
b.cookies.add({'_jc_save_fromStation':u'%u5317%u4EAC%2CBJP'}) #      (  )
b.cookies.add({'_jc_save_toDate':'2018-08-11'}) #     
b.cookies.add({'_jc_save_toStation':u'%u90D1%u5DDE%2CZZF'}) #      (  )
b.reload() #     cookies
b.find_by_text(u'  ').click() #    
 
#       
l = ['GC-  /  ','D-  ','Z-  ','T-  ','K-  ','  ']#                
for i in l:
  btn = b.find_by_text(i)
  btn.click()
  
#       (      )  
b.find_by_id(u'show_more').click()
 
 
#     
def The_seat():
 
  '''
       ,       <    >、<    >  。
  <    >     5     ( ),          ,      。
  '''
  seat =['   ','  ','  ','  ','  '] #        
  b.find_by_xpath('/html/body/div[6]/div[5]/div[2]/div[7]/div[2]/span/a').click()#           
  for i in seat:
    b.find_by_name(i).click() #    
  b.find_by_xpath('/html/body/div[11]/div[1]/a').click()#    
  b.find_by_text(u'      ').click()#     <    >  ( )。         ,          。
 
 
#    
def Train_ticket_purchase():
  
  The_seat() #    
  b.find_by_id(u'show_more').click() #       (      )
 
  #    
  while b.url != 'https://kyfw.12306.cn/otn/confirmPassenger/initDc': #              
    try:
      b.find_by_text(u'  ').click() #     
      if b.is_element_present_by_text(u'  ') == True: #     <  >
        for i in b.find_by_text(u'  '): # b.fin_by_text(u'  '),    <  >     ,        ‘  '  ,  ‘  '       ,         。
          if i.has_class('btn72'): #  <  >  ,                (    <  >   ,     class('btn72'))
            i.click()#      
          
            if b.is_element_present_by_xpath('//*[@id="content_defaultwarningAlert_hearder"]') == True: #       :        
              b.find_by_xpath('//*[@id="gb_closeDefaultWarningWindowDialog_id"]').click() #       
              print('        ,          。')
              break
 
            if b.is_element_present_by_xpath('//*[@id="content_defaultwarningAlert_title"]') == True: #       :              ,             ,         、    、           ,        。
              b.find_by_xpath('//*[@id="qd_closeDefaultWarningWindowDialog_id"]').click() #    (  :    ,       )
            
            b.find_by_text(u'xxx')[1].click() #         (  :                 (    ,     ),     )
            b.find_by_text(u'    ').click()
 
            #    (       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('    ,    ')
            break
          else:
            print('    ,     ...')
      else:
        print('    ,     ...')      
    except:
      print('    ,         ...')
      break
 
 
if __name__ == '__main__':
  Train_ticket_purchase()

以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。