- pttCrawler.py (爬蟲主要程式)
- connectDB.py (連接資料庫相關功能)
- getBoards.py (獲取看板名稱及網址)
- PTTDB.PTT_ARTICLE
- PTTDB.PTT_COMMENT
- PTTDB.PTT_ETL_LOG
- PTTDB.PTT_ETL_DETAIL_LOG
- user: pttuser1
- passwd: howdoyouturnthison3306
- host: localhost:3307
- app.py
- material/static/
- material/templates/
- host: localhost:5001
- 用於讓別人訪問爬蟲的 WebUI
- 產生一公開 DNS 使其他人可訪問自己的 localhost:5001
- docker-compose 的 yml 檔及 dockerfile 檔案放於此GitHub的根目錄
- 啟用服務有: Python3.7環境、Ngrok、MySQL、Kafka
git clone https://github.com/uuboyscy/pttWebCrawler.git
cd pttWebCrawler
第一次開啟需要較長時間
sh start.sh
- 下拉式表單選擇欲爬取看板
- 選擇欲爬取時間範圍
- 點選「開始爬取」即進入爬蟲程序(該畫面請勿關閉)
- 開始爬取時,點選下方「Log Monitor」可進入即時Log監控畫面
首頁選填資料
下拉選單選擇看板
開始爬取,下方Log Monitor可觀看即時Log
爬取時不斷向Kafka consum log
爬蟲程式開始執行後,PTTDB.PTT_ETL_LOG中會出現一筆statusId為executing的資料, 若此資料的紀錄時間與現在時間相隔超過15分鐘,則判定為異常, 網頁中「先前未完成且已中斷的程序」處會出現該程序的相關資料,如下圖, 直接點選即可繼續將為爬取資料爬完, 執行完畢後,PTTDB.PTT_ETL_LOG中該筆資料的statusId將變為end
![]()
- Process ID
- 爬取區間
- 爬取目標
- 爬取資料之表格
- PTTDB.PTT_ARTICLE
- PTTDB.PTT_COMMENT
- PTTDB.PTT_ETL_LOG
- PTTDB.PTT_ETL_DETAIL_LOG
文章資訊及內容(PK 為 articleId)
文章留言(FK 為 articleId,可用來與 PTTDB.PTT_ARTICLE 進行 JOIN)
爬蟲啟動結束之狀態(PK 為 processId。executing為執行中,end為結束)
爬蟲過程詳細log,包含爬了哪些文章、遇到什麼問題、上傳資料庫或Kafka等(FK 為 processId,可與 PTTDB.PTT_ETL_LOG 進行 JOIN)
sh stop.sh