Giter Club home page Giter Club logo

pttwebcrawler's Introduction

環境需求

須先安裝Git、Docker、Docker-compose

其他訊息

1. 主要程式放於 material/ 目錄內

  • pttCrawler.py (爬蟲主要程式)
  • connectDB.py (連接資料庫相關功能)
  • getBoards.py (獲取看板名稱及網址)

2. 資料庫創建SQL放於 mysql-dump/ 目錄內,有四個Table

  • PTTDB.PTT_ARTICLE
  • PTTDB.PTT_COMMENT
  • PTTDB.PTT_ETL_LOG
  • PTTDB.PTT_ETL_DETAIL_LOG

3. 資料庫帳號

  • user: pttuser1
  • passwd: howdoyouturnthison3306
  • host: localhost:3307

4. WebUI 以 Python Flask 寫成,放於 material/ 目錄內

  • app.py
  • material/static/
  • material/templates/
  • host: localhost:5001

5. Ngrok 服務

  • 用於讓別人訪問爬蟲的 WebUI
  • 產生一公開 DNS 使其他人可訪問自己的 localhost:5001

6. 所有服務皆以 Docker 啟動

  • docker-compose 的 yml 檔及 dockerfile 檔案放於此GitHub的根目錄
  • 啟用服務有: Python3.7環境、Ngrok、MySQL、Kafka

啟動步驟

1. 於終端機輸入指令下載檔案

git clone https://github.com/uuboyscy/pttWebCrawler.git

2. 進入程式所在目錄

cd pttWebCrawler

3. 啟動爬蟲網頁伺服器

第一次開啟需要較長時間 sh start.sh

接著會看到以下畫面

最下方的 Ngrok 內顯示的網址即為 WebUI 的位址
直接將該網址複製貼在瀏覽器即可 start


進入網頁畫面後的操作

1. 直接填選欲爬取資訊

  • 下拉式表單選擇欲爬取看板
  • 選擇欲爬取時間範圍
  • 點選「開始爬取」即進入爬蟲程序(該畫面請勿關閉)
  • 開始爬取時,點選下方「Log Monitor」可進入即時Log監控畫面

首頁選填資料 webindex 下拉選單選擇看板 boards 開始爬取,下方Log Monitor可觀看即時Log crawling 爬取時不斷向Kafka consum log logmonitor

2. 若爬蟲程式意外停止,重開後可選擇繼續執行

爬蟲程式開始執行後,PTTDB.PTT_ETL_LOG中會出現一筆statusId為executing的資料, 若此資料的紀錄時間與現在時間相隔超過15分鐘,則判定為異常, 網頁中「先前未完成且已中斷的程序」處會出現該程序的相關資料,如下圖, 直接點選即可繼續將為爬取資料爬完, 執行完畢後,PTTDB.PTT_ETL_LOG中該筆資料的statusId將變為end errorprocess errorprocessdb


爬取完成後

1. 可看到該次爬取的資訊

  • Process ID
  • 爬取區間
  • 爬取目標
  • 爬取資料之表格

爬取結束的畫面 result

2. 爬取結束後可於資料庫查看資料(4個Tables)

  • PTTDB.PTT_ARTICLE
  • PTTDB.PTT_COMMENT
  • PTTDB.PTT_ETL_LOG
  • PTTDB.PTT_ETL_DETAIL_LOG

文章資訊及內容(PK 為 articleId) pttarticle 文章留言(FK 為 articleId,可用來與 PTTDB.PTT_ARTICLE 進行 JOIN) pttcomment 爬蟲啟動結束之狀態(PK 為 processId。executing為執行中,end為結束) pttetllog 爬蟲過程詳細log,包含爬了哪些文章、遇到什麼問題、上傳資料庫或Kafka等(FK 為 processId,可與 PTTDB.PTT_ETL_LOG 進行 JOIN) pttetldetaillog


關閉程式

1. 於終端機輸入指令

sh stop.sh

接著會看到以下畫面

stop


pttwebcrawler's People

Contributors

uuboyscy avatar

Watchers

James Cloos avatar  avatar

Forkers

arthurtibame

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.