本文為知乎爬蟲系列第二篇,重點探討爬蟲整體流程設計、資料去重策略以及人物關係圖譜的構建思路。專案開源於 GitHub:ZhihuSpider,並附贈已爬取的 MySQL 資料庫樣本。
| 策略 | 優點 | 缺點 |
|---|---|---|
| 資料庫主鍵約束 | 絕對不重複,實現簡單 | 批量插入時易拋出異常,需捕獲處理 |
| 寫入前查詢資料庫 | 邏輯可控 | 頻繁訪問 DB,效能低下 |
| 記憶體緩存隊列(如 LRU) | 速度快,命中率高 | 資料量大時易 OOM,需限制大小 |
採用方案: 主鍵約束 + 記憶體 LRU 緩存 + 緩存未命中時回查資料庫。後期將自行實現 LRU 緩存,提升命中率。
採用「攜帶上級信息」的尾遞歸思想:每個用戶節點攜帶其來源用戶 ID,解析時即可建立邊關係,無需額外關聯表。
獲取 URL → 解析頁面 → 判斷是否存在
↓ 是 ↓ 否
更新/攜帶信息 存入新用戶
↓
解析 Followers / Followees
↓
遞歸進入下一層解析

下一篇將深入分析知乎登錄請求、_xsrf Token 處理、驗證碼識別以及 Follower API 的參數構造。