跳到主要內容

租窩 Zwoo — 租屋資料平台

將分散在不同來源的非結構化租屋資訊,自動整理成可搜尋、篩選及地圖瀏覽的房源平台。

正式營運GWP4 自有產品案例

本案例為 GWP4 自行開發的產品或研究專案,並非外部客戶委託案。列出的內容用於呈現實際技術能力與做法。

  • 多來源資料蒐集
  • LLM 結構化
  • 地理資料
  • 搜尋與篩選
  • 會員及訂閱產品
租窩 Zwoo 首頁:整合多平台房源、地圖視覺化搜尋與行情分析
Zwoo 正式站首頁(zwoo.gwp4.com)

背景與問題

租屋資訊散落在 PTT 租屋板、Facebook 地區社團等來源,格式完全不一致:有人用表格列出條件,有人寫成一整段文字,有人只放照片配一句話。要找房的人得在多個平台之間來回翻,很難掌握物件的地理分佈與價格區間。

原本的處理方式

使用者自行在各平台搜尋、逐則閱讀貼文、手動記錄有興趣的物件,再自己去地圖上確認位置與通勤距離。

設計目標

  • 把非結構化貼文轉成可查詢的結構化欄位(租金、坪數、格局、地址)
  • 用地圖呈現物件分佈,取代條列式清單的翻找
  • 同一物件在多個來源重複張貼時要能去重
  • 資料要能持續更新,而不是一次性匯入

解決方案

建立一條完整的資料管線:爬蟲從多個來源取得原始貼文,先存入原始資料庫保留完整內容,再交由 LLM 抽取結構化欄位,接著做地址正規化與 Geocoding(多個 Provider 互為備援),最後寫入可查詢的資料庫,由 Next.js 前端搭配 Google Maps 呈現。整條管線由排程工具定時執行,兩條 flow 各自處理不同來源。

核心功能

  • 多來源貼文蒐集與原始資料保存
  • LLM 欄位抽取(租金、坪數、格局、聯絡方式)
  • 地址正規化與多 Provider Geocoding 容錯
  • 重複物件偵測與去重
  • 地圖瀏覽與區域篩選
  • 條件搜尋與收藏
  • 會員與訂閱機制

系統架構

爬蟲層(Python)→ 原始資料庫 → Pipeline(LLM 解析、Geocoding、去重、驗證)→ 結構化資料庫(PostgreSQL / PostGIS 地理查詢)→ API → Next.js + Google Maps 前端。排程以 Prefect 管理,兩條 flow 分別對應不同來源,各自每 12 小時執行。

技術選擇

  • Python 爬蟲(Requests / BeautifulSoup / Playwright)
  • LLM 結構化解析
  • Prefect 排程
  • MongoDB(原始貼文)
  • PostgreSQL + PostGIS(地理查詢)
  • Next.js + TypeScript
  • @vis.gl/react-google-maps

開發過程與限制

  • 來源貼文格式不可控,正規表達式無法涵蓋,因此改用 LLM 解析
  • Geocoding 服務有配額與失敗率,需要多 Provider 互為備援
  • 地圖 API 有成本考量,前端需控制請求次數與標記渲染量
  • 同一物件重複張貼的判定沒有唯一鍵,需綜合多個欄位比對

可驗證指標

以下皆為可查證的技術事實,不含未經驗證的成效數字。

資料來源類型
PTT 租屋板、Facebook 地區社團
管線執行頻率
兩條 flow,各每 12 小時執行
資料庫
原始資料與結構化資料分離儲存
上線狀態
正式營運中(zwoo.gwp4.com)

可以延伸到哪些產業

  • 房仲與物件管理
  • 二手商品與分類廣告
  • 職缺與人力媒合
  • 任何需要把社群貼文轉成結構化資料的產業

想做類似的東西?

不需要先寫好規格。描述目前的流程與資料來源,我們就能評估可行做法與風險。