我要訂便當 (1): 用 Python + Selenium 控制瀏覽器取得訂單

2024.10 更新: Line Notify 將於 2025 年 3 月停止服務(LINE Notify 結束服務公告),有看到這篇的朋朋請選擇一組新的通知服務來串吧 QQ

前言:

這是參加六角鼠年全馬的第一篇,主要是希望能夠養成寫部落格的習慣。由於我本身並沒有主要技能,因此這次參賽文章會以我最近玩的玩具、使用的套件或是遇到的問題做紀錄。

希望能夠派上用場。

目標:使用 PythonSelenium 連線到訂便當網站,自動輸入帳號密碼登入後,取回網站上的訂單資訊

(2020/12/4) 更新: 由於訂便當網站改版,所以程式碼已經不能照抄了。但有興趣的朋友還是能自己摸索做點變動,也能夠照常進行喔,加油~

最近在公司的時候有個莫大的煩惱,就是關於辦公室團購這回事兒。現在待著的公司主要是從 Dinbendon 這套系統來揪團購,舉凡品客、火鍋等都在上面訂過,據我觀察最受歡迎出現最多次的當屬雞排了。煩惱就在於,每次都會錯過雞排的團購,光在辦公室聞著四面八方傳來的雞排香味,就令人無法忍受!因此趁著這個機會,來嘗試能不能像之前的 PTT 一樣來弄出一個通知,順便玩玩最近看到的工具。這系列的文章會分成多個部分,主要是以使用的工具來分集。

由於在從團購網取得訂單的過程中需要跟網頁進行互動,因此這次要使用的工具是 Selenium

Selenium 是一個對網頁做自動化測試的工具,但我個人比較常在爬蟲的時候用到XD。它能夠經由腳本或錄製的方式對瀏覽器進行操作,並且也支援相當多語言可以使用,例如我同事便使用 C# 和 Hangfire 來完成訂便當的目標(對,這麼無聊的人不只我一個),而我則用相對比較熟悉的 Python 來實作。

……

閱讀全文



Python: 用爬蟲在 PTT 上監聽關鍵字並寄通知信

前陣子很想跟 Netflix 的團購,三不五時就上 PTT 看一下團購板,但看到的時候大多已經截止,還有填單填到一半發現已經收滿的,氣得七竅生煙。故嘗試寫了一個通知,在這邊記錄下來。

目標:當團購板上新發了一篇 Netflix 的文,馬上寄信告訴我。

為了這個目標,我們基本上需要:

  • 用爬蟲取得團購板的文章標題
  • 能夠寄信(使用 Gmail)
  • 持續監視,也就是重複執行
……

閱讀全文



Android: MySQL 連線筆記(使用XAMPP)

之前做給學弟妹參考的簡單筆記,順手放上來,以後遇到的時候可以回來參考。

目標:利用 XAMPP 簡單地架設一個伺服器環境,建立資料庫,並且能在 Android 上取得資料庫的資料。

架設伺服器環境

在電腦架設伺服器環境的工具有很多種,例如 Windows 內建就有的 IIS(通常拿來搭配 ASP.net)以及微軟的 WAMP 等等,或是直接用 Node.js 跑環境兼後端,不勝枚舉。今天要拿來實作的是 XAMPP 這一款。XAMPP 嚴格說起來並不算是一個軟體,而是一個架站懶人包,它的名字是由這些東西組成的:

……

閱讀全文



Asp.net MVC: 連線資料庫、簡單實作 CRUD

在教學時直接使用 EF 對資料庫跑繫結的方式產生各頁面,但得到了「點一點東西就跑出來了搞不懂呀」的回饋,心想有道理。因此從頭開始實作一遍,並記錄下來。(雖然做完還是覺得,直接用 EF 跑的話果然比較安全方便啊)

目標:實作一個 MVC 架構,具資料庫基本操作功能的網站,其中包含連線至資料庫的 model、對其進行調用的 controller 以及顯示的 view。

註:本文預設已在本地電腦上安裝了 SQL Server,並且建立了測試用的資料庫 Test 及表 card,詳情會在文章內述。另外,由於在寫這邊的時候是為了練習手動從編碼開始嘗試連線,故將不使用 EF 連線產生 Edmx 的方式,而是直接手工編寫程式碼進行操作。

另外,關於直接從資料表自動產生可操作的頁面,亦即使用 Entity Framework 做資料繫結的方式,請見 Asp.net MVC 筆記:Entity Framework 連線資料庫

……

閱讀全文



Asp.net MVC: Entity Framework 連線資料庫

目標:將 上一篇的 Asp.net MVC:連線資料庫、簡單實作 CRUD 的資料庫基礎功能改成以 Entity Framework 產生的方式跑一遍

既然上一篇介紹了土法煉鋼動手做的資料庫取值方式,就覺得不順手把從 EF 建立出基本功能介面的方式記錄下來似乎是有點奇怪。實際上開始寫成筆記之後才發現對內容尚不是很了解,例如一直用 Data First 產生頁面但對 Code First 以程式碼產生架構的方式很不熟。儘管如此仍稍微紀錄一下,之後有更深的了解(例如 ASP.NET Identity 或 Code First 等部分)再進一步做成筆記。另外也可參考較詳細的官方文檔

……

閱讀全文