假設有個HTML原始碼
<input id="my_name" type="text" name="fname"/>代表可以透過id my_name來填入資料,寫成:
input = browser.find_element_by_xpath("//input[@id='my_name']") input.send_keys('Amy')
就可以在指定的欄位中填入你的名字
但如果剛好網站不像這樣這麼單純的話
還有一個簡單的方法可以取得xpath
檢視原始碼找到元件,點原始碼按右鍵→Copy→Copy XPath
再到程式碼中填上就可以了
訂購車票程式範例
from selenium import webdriver from selenium.webdriver.support.ui import Select from selenium.common.exceptions import NoSuchElementException, WebDriverException import time if __name__ == '__main__': try: browser = webdriver.Chrome() browser.get('http://railway.hinet.net/Foreign/TW/etno1.html') person_id = browser.find_element_by_xpath("//input[@id='person_id']") person_id.send_keys('A123456789') # 身分證字號 date = browser.find_element_by_xpath("//select[@id='getin_date']") date.send_keys('2018/09/27') # 日期 from_station = Select(browser.find_element_by_id('from_station')) from_station.select_by_value('100') # 起站代碼 to_station = Select(browser.find_element_by_id("to_station")) to_station.select_by_value('149') # 到站代碼 train_no = browser.find_element_by_xpath("//input[@id='train_no']") train_no.send_keys('181') # 車次 browser.find_element_by_css_selector('button.btn.btn-primary').click() rand = browser.find_element_by_xpath("//input[@id='randInput']") input_str = input('請輸入圖形中的英數字: ') # [!!] 手動輸入圖形驗證碼 rand.send_keys(input_str) browser.find_element_by_css_selector('button.btn.btn-primary').click() print('close brower after 10s...') time.sleep(10) browser.close() except NoSuchElementException as e: print(e) except WebDriverException as e: print(e)其中幾個參數請根據情形修改
(1) 身分證字號
(2) 乘車日期(格式YYYY/MM/DD)
(3) 起站代碼、到站代碼
(4) 車次 代碼請參考
http://railway.hinet.net/Foreign/TW/etno1.html
圖形驗證碼其實就是防止自動程式搶購
因此這部分需要自己看圖輸入答案才會真正完成訂購
雖然如此能自動填寫資料還是可以節省不少時間
程式未針對資料錯誤進行防呆(像是車次不存在、代碼填錯)
資料正確的情況下都能成功訂購一般車次
如果是普悠瑪的話
因為還要填人數所以不太一樣
需要的話記得要修改一下才適用
沒有留言:
張貼留言