Skip to content

About

Fetch the number of friends of commenters on a Facebook post.

Resources

Stars

0 stars

Watchers

0 watching

Forks

 
 

Repository files navigation

🔍 Facebook 貼文抓取工具

一個功能完整的 Facebook 貼文抓取工具,支援使用 Selenium 自動化瀏覽器來抓取貼文內容、留言,並提供朋友數量分析和視覺化圖表。

✨ 功能特色

  • 🎯 貼文抓取:自動抓取 Facebook 貼文的內容、圖片、留言
  • 💬 留言分析:支援點擊「查看更多留言」載入更多留言(最多 100 次)
  • 👥 朋友數量分析:自動分析留言者的 Facebook 朋友數量
  • 📊 視覺化圖表:使用 Chart.js 繪製朋友數量分佈直方圖
  • 🌐 Web UI:現代化的網頁界面,無需使用 Terminal
  • 📥 數據匯出:支援匯出留言 JSON 和朋友數量分析結果
  • 🔐 Cookies 支援:支援使用 Cookies 進行身份驗證
  • 🔧 DEBUG Mode:開發模式,可使用示例資料快速測試
  • ⚡ 並行處理:支援多個 Chrome 實例並行分析,提升效率

🎬 DEMO 影片

DEMO 影片 1 (DEBUG mode - 假資料)

DEMO 影片 1

點擊上方圖片觀看完整功能演示影片

DEMO 影片 2 (Real data)

DEMO 影片 2

點擊上方圖片觀看第二個功能演示影片

影片展示了以下功能:

  • Web UI 界面操作
  • 貼文抓取流程
  • 朋友數量分析
  • 視覺化圖表展示
  • 風格切換功能
  • DEBUG mode 使用
  • 並行處理功能

📸 功能截圖

主界面

主界面 Web UI 主界面,包含 DEBUG mode 開關和 Chrome 實例數控制

風格切換功能

風格切換 右上角可切換 5 種不同風格:預設、駭客任務、高科技、賽德龐克、紅色警戒

抓取結果

抓取結果 顯示抓取的貼文內容和留言列表

朋友數量分析

朋友數量分析 分析留言者的朋友數量,低於 40 位的用戶會以紅色標記

分佈圖表

分佈圖表 朋友數量分佈直方圖,包含統計資訊

📋 目錄結構

.
├── app.py                          # Flask Web 應用主程式
├── selenium_facebook_scraper.py   # Selenium 抓取核心功能
├── analyze_friends.py              # 朋友數量分析功能
├── templates/
│   └── index.html                  # Web UI 前端頁面
├── img/                            # 功能截圖資料夾
│   ├── main_interface.png          # 主界面截圖
│   ├── scraping_results.png        # 抓取結果截圖
│   ├── friends_analysis.png         # 朋友數量分析截圖
│   └── friends_chart.png           # 分佈圖表截圖
├── start.bat                       # 啟動服務器(Windows)
├── stop.bat                        # 停止服務器(Windows)
├── check_server.bat                # 檢查服務器狀態(Windows)
├── cookies.json                    # Facebook Cookies(需自行準備)
├── README.md                       # 本文件
└── .gitignore                      # Git 忽略文件

🚀 快速開始

環境要求

  • Python 3.7+
  • Chrome 瀏覽器
  • ChromeDriver(會自動下載)

安裝依賴

# 安裝 Python 套件
pip install selenium flask flask-cors webdriver-manager

# 如果需要使用 facebook-scraper(舊版功能)
pip install facebook-scraper lxml_html_clean

準備 Cookies

cookies.json 是用於身份驗證的 Facebook Cookies 檔案,可以讓抓取工具以登入狀態訪問 Facebook,提高抓取成功率。

方法一:使用 EditThisCookie 擴充功能(推薦)

  1. 安裝 Chrome 擴充功能:

  2. 登入 Facebook:

  3. 匯出 Cookies:

    • 點擊瀏覽器右上角的 EditThisCookie 擴充功能圖示
    • 點擊「Export」按鈕
    • 選擇「Export as JSON」格式
    • 複製匯出的 JSON 內容
  4. 儲存檔案:

    • 在專案目錄下創建 cookies.json 檔案
    • 將複製的 JSON 內容貼上並儲存
    • 確保檔案編碼為 UTF-8

方法二:使用瀏覽器開發者工具

  1. 登入 Facebook:

  2. 打開開發者工具:

    • 按 F12 或右鍵選擇「檢查」
    • 切換到「Application」或「應用程式」標籤
  3. 查看 Cookies:

    • 在左側選單展開「Cookies」
    • 點擊 https://www.facebook.com
    • 您會看到所有 Facebook 的 Cookies
  4. 手動建立 JSON 檔案:

    • 創建 cookies.json 檔案
    • 按照以下格式手動輸入重要的 Cookies(至少需要 c_user, xs, datr, fr 等):
    [
        {
            "name": "c_user",
            "value": "您的用戶ID",
            "domain": ".facebook.com",
            "path": "/",
            "secure": true,
            "httpOnly": false,
            "sameSite": "no_restriction",
            "session": false
        },
        {
            "name": "xs",
            "value": "您的xs值",
            "domain": ".facebook.com",
            "path": "/",
            "secure": true,
            "httpOnly": true,
            "sameSite": "no_restriction",
            "session": false
        }
        // ... 其他 Cookies
    ]

Cookies 檔案格式說明

cookies.json 應該是一個 JSON 陣列,每個元素包含以下欄位:

  • name: Cookie 名稱(必填)
  • value: Cookie 值(必填)
  • domain: Cookie 域名,通常為 .facebook.com(必填)
  • path: Cookie 路徑,通常為 /(必填)
  • secure: 是否為安全連線,通常為 true(選填)
  • httpOnly: 是否為 HTTP Only,視 Cookie 而定(選填)
  • sameSite: SameSite 設定,通常為 no_restriction(選填)
  • session: 是否為 Session Cookie,true 表示關閉瀏覽器後失效(選填)
  • expirationDate: 過期時間戳記(選填)

重要 Cookies 說明

以下 Cookies 對於身份驗證特別重要:

  • c_user: 用戶 ID,用於識別登入的帳號
  • xs: 驗證令牌,用於維持登入狀態
  • datr: 設備識別碼
  • fr: Facebook 追蹤 Cookie
  • sb: 瀏覽器識別碼

⚠️ 安全注意事項:

  • cookies.json 包含您的登入憑證,請妥善保管
  • 絕對不要將此檔案上傳到 Git 倉庫或分享給他人
  • 如果 Cookies 洩露,請立即更改 Facebook 密碼
  • 建議定期更新 Cookies(約每 1-2 個月)
  • 本專案的 .gitignore 已設定忽略 cookies.json 檔案

💻 使用方法

方法一:Web UI(推薦)

Windows 用戶(使用批次文件)

  1. 啟動 Web 應用:

雙擊 start.bat 或在命令行執行:

start.bat
  1. 停止 Web 應用:

雙擊 stop.bat 或在命令行執行:

stop.bat
  1. 檢查服務器狀態:

雙擊 check_server.bat 或在命令行執行:

check_server.bat

其他方式啟動

  1. 使用 Python 直接啟動:
python app.py
  1. 訪問網頁:

在瀏覽器中打開:http://localhost:5003

  1. 開始抓取:

    • 輸入 Facebook 貼文 URL
    • 選擇點擊「查看更多留言」的次數(0-100 次)
    • 勾選「使用 Cookies」(建議)
    • 點擊「🚀 開始抓取」
  2. 查看結果:

    • 實時查看抓取進度和日誌
    • 查看抓取的留言內容
    • 點擊「🔍 分析朋友數量」分析留言者的朋友數量
    • 查看朋友數量分佈圖表
    • 匯出 JSON 數據

方法二:命令行

# 直接執行 Selenium 抓取
python selenium_facebook_scraper.py

📖 功能說明

1. 貼文抓取

  • 自動抓取貼文標題、內容、圖片
  • 支援抓取留言(包含作者名稱、URL、留言內容)
  • 可設定點擊「查看更多留言」的次數(0-100 次)

2. 朋友數量分析

  • 自動訪問每個留言者的 Facebook 個人頁面
  • 提取朋友數量資訊
  • 生成 JSON 格式的分析結果

3. 視覺化圖表

  • 使用 Chart.js 繪製朋友數量分佈直方圖
  • 橫軸:朋友數量(每格 20 人,最多 2000 人)
  • 縱軸:落在該區間的留言者人數
  • 顯示統計資訊:總人數、平均、中位數、最少、最多

📁 輸出文件

  • selenium_post_data.json - 抓取的貼文和留言數據
  • friend_analysis.json - 朋友數量分析結果
  • facebook_post_screenshot.png - 頁面截圖(調試用)
  • facebook_post_page.html - 頁面 HTML(調試用)

⚙️ 配置選項

點擊「查看更多留言」次數

在 Web UI 中可以選擇:

  • 0 次:只抓取初始可見的留言(預設)
  • 1-100 次:點擊「查看更多留言」按鈕的次數

Cookies 設定

  • 建議勾選「使用 Cookies」以獲得更好的抓取效果
  • 確保 cookies.json 文件存在且有效

⚠️ 注意事項

  1. 遵守服務條款:使用此工具時,請遵守 Facebook 的服務條款和相關法律法規
  2. 僅抓取公開資料:只抓取公開可見的內容,不要侵犯他人隱私
  3. 頻率控制:避免過於頻繁的請求,可能導致帳號被封鎖
  4. 僅供學習研究:此工具僅供學習和研究用途
  5. Cookies 安全:請妥善保管 cookies.json,不要分享給他人

🐛 常見問題

Q: 為什麼抓不到資料?

A: 可能的原因:

  • Facebook 的反爬蟲機制(需要等待或使用 Cookies)
  • 頁面需要登入才能查看
  • URL 格式不正確
  • 網路連線問題

Q: 如何使用 Cookies?

A: 請參考上面的「準備 Cookies」說明,使用 EditThisCookie 擴充功能匯出 Cookies。

Q: 可以抓取哪些資料?

A: 可以抓取:

  • 公開頁面的貼文
  • 貼文的內容、圖片
  • 留言(包含作者資訊)
  • 留言者的朋友數量(需要分析功能)

Q: 分析朋友數量需要多長時間?

A: 每個用戶約需 5-10 秒,具體時間取決於留言者數量。例如 20 位留言者約需 2-3 分鐘。

🛠️ 技術棧

  • 後端:Python 3.7+, Flask
  • 前端:HTML, CSS, JavaScript, Chart.js
  • 自動化:Selenium WebDriver
  • 瀏覽器:Chrome + ChromeDriver

📝 授權

本專案僅供學習和研究用途。使用時請遵守相關法律法規和服務條款。

🤝 貢獻

歡迎提交 Issue 和 Pull Request!

📚 參考資源


⚠️ 免責聲明:本工具僅供學習和研究用途。使用者需自行承擔使用風險,並遵守相關法律法規和服務條款。

About

Fetch the number of friends of commenters on a Facebook post.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages