100行以上のpythonコードはチケット獲得アシスタントを実現します。


一. コードはPython+Splinterを使って開発されました。SplinterはPythonを使って開発されたオープンソースWebアプリケーションテストツールです。自動ブラウズサイトとそれとの相互作用を実現します。
二. Python 3または2をインストールして、Splinterをインストールします。 `pip install Splinter
三. Splinter注意事項
    1.SplinterのBrowser類はデフォルトではfirefoxを優先しますので、chromeを使うとdriver_を指定する必要があります。name=「chrome」は、習慣をつけると、どんなブラウザを使っても指定され、問題が少なくなります。
    2.もちろん、chromeを選択すると、自分のブラウザのバージョンを確認する必要があります。chromedriverバージョンに対応する必要があります。
四. Splinter.brooserの部分方法紹介
    1.  findbyid(コントロールID).first:idによってコンポーネントを見つけます。
    2.  visis:アクセス指定URL
    3.  fill(「塗りつぶし内容」):指定された内容でコンポーネントを塗りつぶす
    4.  click():クリックイベント
    5.  reload():現在の文書を再読み込みします。
五. 主要な考え方:
    1.自動的にユーザー名、パスワードを充填し、写真の検証コード(手動)をクリックし、自動的に切符の購入照会をクリックし、予約し、指定された乗客を自動的に注文書のページに入力します。
    2.登録時の画像認証コードを除いて、全行程自動で
六. error:
    1.OError:[WinErrer 193]%1は有効なWin 32アプリケーションではありません。
    2.ソリューション:chromedriverバージョンとコンピュータブラウザバージョンのマッピングが対応していません。
    3.ImportError:cannot import name'Browser'
    4.解決策:Splinterがインストールされていますか? `pip install Splinter`はコードファイルとchromedriverを新しいフォルダの下に置いて、他のファイルの影響を防止します。
    5.ファイルを実行する前に、コード内の乗客、ユーザー名、パスワードを正しく記入してください。cookiesが正しいかどうか確認してください。
七. cookiesの表示
    1.chromeブラウザに入り、F 12を押して、NetWorkのオプションを選択します。以下の図のように。    
    2.開始住所:`jc_保存しますfrom Station` 切符の購入時間:`_jc_保存しますfrom Date` 目的地:``jc_保存しますtoStation`
八.  運転方法
    1.python trintickett.py天津南昌2018-02-10
    2.OK
九.  具体的なコードは以下の通りです

# -*- coding:utf-8 -*-
 """
 @author Jianxiong Rao
 """
 from splinter.browser import Browser
 from time import sleep
 import traceback
 import time,sys
 import os
 
 class HuoChe(object):
  """docstring for Train"""
  driver_name=''
  executable_path=''
  #      
  username = u"12306   "
  passwd = u"12306  "
  #cookies     
  #   %u5929%u6D25%2CTJP   %u5357%u660C%2CNCG   %u6842%u6797%2CGLZ
  starts = u"%u5929%u6D25%2CTJP"
  ends = u"%u5357%u660C%2CNCG"
  #    2018-02-05
  dtime = u"2018-02-05"
  #  ,     ,0         
  order = 0
  ###    
  users=[u'   ']
  ##  
  xb=u"   "
  pz=u"   "
  """  """
  #12306  URL
  ticket_url = "https://kyfw.12306.cn/otn/leftTicket/init"
  #12306  URL
  login_url = "https://kyfw.12306.cn/otn/login/init"
  #  12306URL
  initmy_url = "https://kyfw.12306.cn/otn/index/initMy12306"
  #  URL
  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 = os.getcwd()+'/chromedriver'
   print("Welcome To Use The Tool")
  
  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("     ,    ....")
   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("      ....")
    #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_bytext(u"  ").click()
      count += 1
      print("      ....   %s  "%count)
      #sleep(1)
      try:
       self.driver.find_by_text(u'  ')[self.order - 1].click()
      except Exception as e:
       print(e)
       print("      ")
       continue
    else :
     while self.driver.url == self.ticket_url:
      self.driver.find_by_text(u"  ").click()
      count += 1
      print("      ....   %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("       %s "%count)
       continue
    print("    ....")
    #sleep(1)
    #self.driver.reload()
    sleep(1)
    print("      ....")
    for user in self.users:
     self.driver.find_by_text(user).last.click()
    print("    ....")
    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("    ...")
    # self.driver.find_by_id('1D').last.click()
    # self.driver.find_by_id('1F').last.click()
    sleep(1.5)
    print("    ....")
    self.driver.find_by_text('qr_submit_id').click()
 
   except Exception as e:
    print(e)
 
 cities={
 '  ':'%u5929%u6D25%2CTJP',
 '  ':'%u5357%u660C%2CNCG',
 '  ':'%u6842%u6797%2CGLZ'
 }
 
 if __name__=="__main__":
  train = HuoChe()
  train.starts = cities[sys.argv[1]]
  train.ends = cities[sys.argv[2]]
  train.dtime = sys.argv[3]
  train.start()
十. ソースアドレス
住所
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。