這是 IDCC 的期末專題,與彥成同學共同完成,實作一個 ETL 系統,架構建立網站與 APP,提供使用者服務。由於之前做過蘇打綠演唱會撈票,所以就借題發揮,做一個演唱會資訊統整網站。整合政府演唱會開放資料與 PTT 上的賣票訊息,希望可以讓使用者更方便的了解演唱會訊息,更快速的買到票劵
[2017/06/19更新]
Expectation
我們想要架設一個演唱會資訊統整網站,提供以下服務:
- 演唱會訊息彙整
以「政府資料開放平台」提供的演唱會資料為基礎,整合相關資訊 - 分析批踢踢票券版
透過程式分析批踢踢票券版上的貼文,自動歸類相關賣票訊息 - 追蹤最新票劵消息
提供使用者訂閱特定演唱會貼文,以電子郵件通知最新訊息 - 整合相關影片
透過 Youtube 尋找歌手的相關影片
Approach
實作上,分為兩個部份
- 建置一個 ETL (Extract, Transform, Load) 系統
- 架設網站與製作 APP 供使用者使用
實作 ETL 系統
1. 資料庫 資料庫的部分建立了個 table,分別存放演唱會資訊、歌手資訊、PTT 貼文資料與用戶訂閱資料。
- 演唱會資料:主要來自於文化部提供的 JSON 格式 Open Data。
- 歌手資料:由於現今台灣並沒有一個完整的歌手資料庫,因此歌手資訊來自於 Wiki 的歌手列表,經過整理存到資料庫中。
- PTT 演唱會資料:透過程式爬 PTT Drama-Ticket 版上的新文章,並經過處理以及歸類。
- 用戶訂閱資料:從 Hiticket.tk 上,由用戶訂閱的資料自動產生,包含訂閱歌手名稱、用戶信箱。
2. Python 資料處理與分類 將 PTT 文章標題與歌手及演唱會名稱比對,做簡單歸類。
3. 寄信服務 確定好每一筆 PTT 貼文是哪位歌手舉辦之後,即可再次搜尋用戶訂閱資料庫,找到所有訂閱特定歌手的用戶 ID,寄出通知 email
架設網站與 APP
網站使用 Django 開發,採用 Restful 架構,使用 MySQL 資料庫,部分頁面使用 Ajax 技術。以下列出開發的重要事項:
- 使用 Bootstrap:我們用他來美化版面,搭配 Bootstrap flatly 版型,再加入 Font-Awesome 與 Social Buttons for Bootstrap,讓網頁有漂亮的 icon 圖示與社群軟體按鈕。
- 使用 JavaScript 函式庫:使用 Masonry 製作瀑布流,再加上 Alertify.js 美化訊息視窗。
- Django 插件的使用:Django Allauth、Django Mail Queue、Django Endless Pagination
- 利用 Android Webview 寫一隻簡單的瀏覽器程式
首頁截圖
Demo 影片
網站已經拿下來了,不過這裡有當時的 Demo 影片
你好!請問怎麼用這個程式抓飲料店的資料
您好
您是希望抓取ptt上的飲料店資料嗎?或是有其他來源?
基本上爬蟲程式需要做修改
你好,我對這支程式很有興趣,希望能與你有進一步的討論,歡迎聯繫我 mike.ko@prototype-hacker.com
已經email回覆您囉~