超簡單一鍵推播 591 租屋資訊完全免 Coding-透過 Google Sheet 與 LINE Notify
2022/01/23 更新:
新年快樂~修復之前寫死 Cookie 導致的問題。
Github:
https://github.com/dang113108/591_rent
Commit: https://github.com/dang113108/591_rent/commit/4d6de2f7ee527cf450f17894fcc17935062fe895
2021/11/08 更新:
修復因 591 改版導致整組壞掉的問題!
Github: https://github.com/dang113108/591_rent/tree/dev
2021/09/08 更新:
感謝邦友 flier268, travis668 幫忙修復因 591 改版導致抓不到 cover image 的問題!
Github: https://github.com/dang113108/591_rent/tree/dev
2021/02/22 更新:
感謝邦友 Chil 幫忙抓到一個 Bug,如果有在之前嘗試使用失敗的朋友再麻煩覆蓋最新版本的 Code 或直接重來一次,謝謝!
Github: https://github.com/dang113108/591_rent/tree/dev
現在房子合約是到六月底,有鑑於租的地方離公司及市區有大概半小時的車程,因此在過完年後的二月中我認為差不多可以開始找下一間房子了。
剛好我的朋友 Robin 在我們的群組分享了他寫的 rentHouse 這個工具,透過 node.js 自己去架設一個 server 來爬 591 的資訊並且推播到 LINE Notify,讓我們可以即時追蹤新發布的物件,效果其實已經相當不錯。但是我沒用,對不起,我沒用
但這次要分享的算是基於他的想法以及我之前使用過 Google Sheet 的經驗來開發的,透過 Google Apps Script 內建的「觸發條件」我們可以設定每分鐘爬一次 591 的資訊,並且一樣推播到 LINE Notify 外,我們還可以將這些資料統整至 Google Sheet 上,去篩選哪些是我可以考慮的,而哪些是我不想要的;而最重要的-不需要任何指令、npm、或安裝額外的東西,只要根據這篇文章的教學,任何人都可以自己架設一個!
功能介紹
- 每分鐘透過你設定的篩選條件到 591 網站上爬蟲並將資訊上傳至 Google Sheet 及推播到 LINE Notify
- 如果該物件已曾經推播過且價格沒有變動,不會再次推播
- 如果該物件已曾經推播過且價格有變動,會再次推播
- 透過 Google Sheet 特性,可多人同時編輯 (但請注意你的 LINE Notify Token 可能會外洩)
- 透過 LINE 特性,可多人加入同一群組一起討論
實際使用多週後的展示
開始設定!
第一步,複製 Google Sheet
Google Sheet link: 591 Rent Template
- 點進去連結後,記得要先登入你的 Google 帳號
- 點選「檔案 > 建立副本」
- 輸入你想要的名稱後,按下確定來建立副本
- 複製完成!
第二步,取得 591 的資料
591 link: https://rent.591.com.tw/
- 進入 591 網站後,第一步請先打開瀏覽器的「開發人員工具」
開發人員工具開啟方式:Google Chrome
- 進入「Network」的分頁
- 搜尋「/home/search/rsList」,此時還不會看到任何東西
- 回到 591 的頁面,搜尋你想要的條件
- 按下「刊登時間」以刊登時間作為排序(最新到最舊)
- 這時回到「開發人員工具」的畫面,可以看到像是這樣的畫面,已經有資訊了
- 點選最下面的一筆,待會會需要複製圖片中紅線部分(包括問號)
第三步,取得 LINE Notify Token
LINE Notify 首頁:https://notify-bot.line.me/zh_TW/
- 請先將 LINE Notify 加入成為你 LINE 的好友
- 建議先在 LINE 中創建一個群組,並邀請 LINE Notify 進入你的群組裡
- 進入 LINE Notify 首頁,並請登入你的 LINE 帳號
- 進入你的「個人頁面」
- 點選「發行權杖」
- 尋找你剛剛創建的群組,並輸入這個權杖的名稱(該名稱除了管理用之外也會是推播內容的標題)
- 點選發行後,會出現該權杖的 Token,請不要將此 Token 外洩以免有人瘋狂傳訊息給你 XD
- 待會會需要複製這個 Token,而且此頁面關閉後將沒辦法再次查看這個 Token,所以請先將他複製到一個安全的地方或先不要關閉這個頁面
最後一步,將以上取得的資訊放入 Google Sheet 中
- 請回到你剛剛所建立的 Google Sheet 副本,並且點選「工具 > 指令碼編輯器」
- 此時會開啟一個新頁面並可以看到原始碼,在這邊我們只需要將剛剛取得的資訊貼到相對應的地方就好
請注意必須保留雙引號的部分
- 按下儲存按鈕
- 接著將上方的功能選取為「main」後點選「執行」
- 可能會跳出需要你授權的視窗,請依照他所跳出的視窗登入你的帳號並允許授權
- 確認下方的執行紀錄沒有錯誤即可到下個步驟
- 點選左側的鬧鐘圖示(觸發條件)
- 點選右下角的「新增觸發條件」
- 請依序將「選擇您要執行的功能」選擇為「main」、「選取活動來源」選擇為「時間驅動」、選取時間型觸發條件類型選擇為「分鐘計時器」,並確定「選取分鐘間隔」為「每分鐘」後,按下儲存按鈕
- 成功!
成果展示
在以上步驟都完成後,Google Apps Script 便會根據你所設定的條件每分鐘去爬一次 591 的資料,並儲存到你所建立的 Google Sheet 以及推播到你的 LINE Notify。
如果過了一分鐘後都沒有任何通知或更新,有可能是剛好過去一兩分鐘都沒有新的物件,所以請不用擔心、繼續等待
- Google Sheet (如果 LINE 有通知但 Google Sheet 上沒有的話,請重新整理 Google Sheet 頁面)
以上分享,有任何問題歡迎留言提問 : )
Github: https://github.com/dang113108/591_rent