Try   HackMD

新人資訊

應用-想買東西?先派出機器人幫你監控價格吧!

每次想到用一台電腦連上網就可以找到任何感興趣的資料,就覺得興奮;要娛樂可以要作嚴謹的研究也行,基本上可以期待網路上存在著「任何資料」,對於有限理解力和注意力的個人來說,可以說就是無限大的存在!再加上社群生態的成熟,不只滿足知識的需求,透過網路也可以實際運作各式各樣的商業模式或社會運動,歷史上從來沒有一個時代對許多社交能力不太好的宅宅如此友善,網路不會使人際關係疏離,反而擴大了溝通的管道而聯繫的更緊密。

基於以上信念,我每天總是花費大量的時間在閱讀線上文章,電子書,新聞,線上課程,Youtuber 或 Podcaster 的分享,深深體會到人的注意力是今時代的稀缺資源,逐漸也對五花八門的網路世界產生更嚴格的篩選機制,當我接觸到「爬蟲」這種技術立刻就產生濃厚興趣,用程式幫我上網的概念。陸陸續續東爬西爬,一般公開的 csv, json, html, 表格類資料當然是可以,太雜亂的資料用 regular expression 來對付,要經個人化帳號密碼認證的也沒有問題 (不是破解只是合法的自動化取得自己的資料),最近連 pdf 內容也爬進去了,逐漸的歸納出一些應用類型,今天就來描述一下「價格監視器」的用途。

依照個人親自經歷和觀察,當我們想要探索一個領域,或已經確定要買特定東西,總要經歷一段時間的觀察,對商品規格和價錢多方作比較,有些人較快作成購買決策,也有些人會觀察很久,等到對東西的喜歡程度到達一個高峰,同時遇到價格甜蜜點出現,然後順理成章的完成快樂購物流程。所以我就想設計一個價格監視機器人,每天自動到特定網站查詢,把關鍵資訊記起來,同時即時用 Line 通知。如前一陣子我想要入手折疊腳踏車,預期要可以搭配大眾運輸或小轎車,用這種不太快不太慢的方式到處優遊!從起心動念到入手大概花了一個月,到後來主要品牌和功能規格大小等等都已經非常熟悉了,這段時間若再搭配一些自動化爬蟲機器人那就更事半功倍了。

這次就用我實際關心的兩樣商品為例,一是「氮化鎵充電器」,這是有賴近年來非矽基的化合物半導體技術逐漸成熟,讓原本帶筆電出門要同時攜帶又大又笨重的變壓器成為過去式,重量輕體積小瓦數又大的氮化鎵充電器已經逐漸普遍,Macbook 使用 45W 這個比較早問世,其他 windows 電腦大部分需要 65W 以上,強調效能的開發機或電競機甚至需要到 100W,這個在半年前都還很稀少,目前技術快速進步中,因此我用「氮化鎵 100W」為關鍵字在 momo 搜尋,發現 100W 的目前接近 2000 元,非常好奇何時會降下來,因此我就設定這樣一個機器人,每天自動去 momo 查完資料記起來,並且用 Line 傳出來,我也已經做了簡單管理介面:https://newman-admin.azurewebsites.net/#/robot001

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

管理介面將一些重要的資訊顯示出來,如上一次執行時間,執行一次花費了幾分鐘,是否執行成功,執行完後將網頁截圖存起來,並把關鍵資訊解析出來,如這裡我把在 momo 搜尋結果中排名第一個品名和價格當作關鍵資訊存起來,這樣一段時間之後可以一目了然觀察趨勢,按下 hist 顯示歷史執行記錄,在此以另一項關心的商品為例,果然從某一天有降價:

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

此資訊同時會傳到特定的 Line 群組:

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

在螢幕截圖中可以順便觀察其他不同品牌的狀況:

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

此機器人符合我自訂的呼叫規範,是用 python 所撰寫,活在我的一台舊筆電裡面,Console 畫面長這樣,右邊是 Heartbeat Service and Dotnet Listener,左邊的是 Python Listener:

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Console 畫面可以查到在 21:00 和 21:05 分別傳出啟動訊息,順利把對應的機器人呼叫起來,這個 Schedule 設在資料庫裏面,當然也可以製作管理畫面以方便使用:

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

設定完成之後每天九點 Line 會嘟一下,可能有人會覺得我很無聊,每天去 momo 網站查一下不就好了嗎?還這樣大費周章!阿這就是工程師的浪漫啊!重複的事情是不應該由人去做的,禁止,哈哈。當然機器人設好之後我也可以隨興的再去逛其他東西,重點是「隨興」,就是不喜歡每天做固定的動作,只要是人就會忘記,就會厭煩,只有機器不會。

不知這樣的應用有沒有激起一些人的興趣,讓我可以來開發各式各樣的機器人服務大家?

By Newman Chen 2022/10/28