我們都知道台灣的蝦皮購物精美價廉三不五時會有促銷的活動,尤其是整點優惠或是限時下殺但是這類的商品往往數量少得可憐每次到了商品結帳的畫面都已商品售完,於是開始構想計畫一個禮拜開發一個能定時搶購的程式,這邊我就以Python去設計這套軟體的構思~
邏輯規劃:
當時間到達指定時間點的時候對待搶購的商品進行購買並依照當初定義好的規格去下單結帳等流程
反之當上述流程有異常的時候一律強制停止程式
開發工具:
- Microsoft Visual Studio 2022 IDE
- Github 版控
- Chrome 瀏覽器
- chromedriver
Python PIp 主要套件:
- selenium
程式部分說明:
大致上程式大概分二塊 副程式區Function 和 主程式main這兩部分

基本上這邊是程式進入點 大部分這邊會呼叫副程式的程式執行

副程式說明:
類別分別兩部分:
- class DateEntry()->負責顯示UI相關提供使用者輸入日期等相關資訊
- class Flashbuy()->負責驗證登入有效性 網頁爬取元素 自動購物等相關功能

副程式介面
主程式說明:
- class myThread (threading.Thread)-> 這邊是規劃多執行序方向
- def urlLoadCheck(urlP):->檢查網址格式
- def StratBuy(timeP,urlP,Specification):->執行購買程式並帶入時間點、網址、商品規格
- def indata(aa,bb,cc):->將全域變數資料取代新值
- def showTime():->顯示使用者輸入的時間資訊

重點程式:
開發中我覺得有些程式印象深刻,很多套件都是第一次使用寫的過程中也一直參考網路上的寫法~
WebDriverWait(self.driver, 10, 0.3).until(EC.presence_of_element_located((By.CLASS_NAME,'product-bottom-panel__buy-now'))) # 顯性等待 尋找特定元素出現 這邊是等待蝦皮立即購買的按鈕出來 最多等10秒 每0.3秒Check

def set_cookies(self):
self.driver.get("https://shopee.tw/buyer/login?")
print("###請登入蝦皮###")
time.sleep(5)
while self.driver.title.find('立即登入盡享安全便利的網購樂趣 | 蝦皮購物') != -1:
time.sleep(1) #這邊我是判斷到等待 特定標題出現後結束等待
self.driver.find_element_by_xpath("//input[@autocomplete='username']").send_keys('') # 輸入帳號可自動輸入
self.driver.find_element_by_xpath("//input[@type='password']").send_keys('') # 輸入密碼可自動輸入
time.sleep(60)
print("###登入成功###")
pickle.dump(self.driver.get_cookies(), open('cookies.pkl', 'wb')) #將Cookies擷取儲存
print('###cookie保存成功###')
self.driver.get("https://shopee.tw")



成果影片:

Git 歷程
總結:
基本上這次開發純粹就是實驗性質,基於網頁爬蟲的自動下單當然沒比蝦皮後臺呼叫的API還來的快,不過從中也學到了不少爬蟲知識,包含帶帳戶驗證、尋找元素、UI顯示等,沒意外應該會弄個完整版吧!,畢竟對於結帳流程手速再快也沒比電腦快,這方面的應用還有很多地方可以發揮例如:搶演唱會門票、搶PS5預購、搶活動限時特價等之類的~ 我是阿俊謝謝大家觀看~~