[Python] 高鐵訂票高手程式修正

自動按下 「我同意」的對話方塊

目前瀏覽高鐵網路時會先現「我同意」的對話方塊。

以 <getimageByScreenShot.py> 為例,請在 driver.maximize_window() 第 10 列後加入按我同意鈕的程式碼 ,讓程式自動按「我同意」鈕 ,如下圖加入第 12、13 列。

 1 from selenium import webdriver
2 from PIL import Image # pillow 安裝 Anaconda 時已自動安裝
3 from time import sleep
4
5 # 取出 綱頁圖中的驗證圖片,存入 檔
6 # 請調整解析度
7 url="http://irs.thsrc.com.tw/IMINT"
8 driver=webdriver.Chrome()
9 driver.get(url)
10 driver.maximize_window()
11
12 driver.find_element_by_id("btn-confirm").click() # 按我同意
13 sleep(0.5)
14
15 driver.save_screenshot("img_screenshot.png")
16 element=driver.find_element_by_id('BookingS1Form_homeCaptcha_passCode')
17
18 left=element.location['x']
19 top=element.location['y']
20 right=element.location['x'] + element.size['width']
21 bottom=element.location['y'] + element.size['height']
22
23 img=Image.open("img_screenshot.png")
24 img2=img.crop((left,top,right,bottom))
25 img2.save('img_source.png')
1 from selenium import webdriver
2 from PIL import Image # pillow 安裝 Anaconda 時已自動安裝
3 from time import sleep
4
5 # 取出 綱頁圖中的驗證圖片,存入 檔
6 # 請調整解析度
7 url="http://irs.thsrc.com.tw/IMINT"
8 driver=webdriver.Chrome()
9 driver.get(url)
10 driver.maximize_window()
11
12 driver.find_element_by_id("btn-confirm").click() # 按我同意
13 sleep(0.5)
14
15 driver.save_screenshot("img_screenshot.png")
16 element=driver.find_element_by_id('BookingS1Form_homeCaptcha_passCode')
17
18 left=element.location['x']
19 top=element.location['y']
20 right=element.location['x'] + element.size['width']
21 bottom=element.location['y'] + element.size['height']
22
23 img=Image.open("img_screenshot.png")
24 img2=img.crop((left,top,right,bottom))
25 img2.save('img_source.png')

同樣的觀念,也在 <ticket.py> 程式中加入按我同意鈕的程式碼。 如下圖加入第 19、20 列。

1 import matplotlib.pyplot as plt
2 import numpy as np
…略
17 driver.maximize_window()
18
19 driver.find_element_by_id("btn-confirm").click() # 按我同意鈕
20 sleep(0.5)
21
22 # 從 screenshot 中取得驗證碼的圖片
…略
32 def codeocr(offset):
33    global result

其他問題

如果您執行之後還是有問題,建議依下列步驟找出問題。 確認 OCR 是否已經正確安裝。

  • 請您先確定 <<pyocr1.py>是否會得到 1130 11,因為這樣就可以確定您的 ocr 環境有建好。 否則有可能是您的 Tesseract-OCR 並未安裝,或是雖然已經安裝但 Path 並未設定。
  • 請執行 <getimageByScreenShot.py> 後查看是否有正確下載 <img_source.png> 驗證圖片檔(要打開圖片觀察)。 記得要加上按我同意的下列兩列程式。
        driver.find_element_by_id("btn-confirm").click() # 按我同意
sleep(0.5)
  • 如果成功,再執行<ocr1.py>,它會辨識 <img_source.png>,並得到驗證碼。
  • 以上都可正確執行,表示您的環境已經建好了,可以執行 <ticket.py>高鐵訂票的程式。

請先調整 顯示設定,將 文字大小 設為 100%。變更文字 欄必須設 100%,解析度 可以自訂。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *