首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

知乎爬蟲實戰(四):HttpClient + Jsoup 解析移動端頁面,提取關注者與粉絲數據

     編輯:Java 綜合教學

知乎爬蟲實戰(四):HttpClient + Jsoup 解析移動端頁面,提取關注者與粉絲數據

專案地址

GitHub:https://github.com/MatrixSeven/ZhihuSpider(已完結,歡迎 Star)

數據下載:README.md 內含 MySQL 匯出文件。

核心技術棧

  • HttpClient:Apache Jakarta 組件,模擬瀏覽器發送 HTTP 請求,支援 Cookie、重定向、連接池。
  • Jsoup:Java HTML 解析器,提供 jQuery 風格選擇器(DOM/CSS),輕鬆提取元素。

關鍵步驟:模擬移動端 UA

知乎 PC 端介面結構複雜,移動端(m.zhihu.com)結構簡潔,適合解析。必須在請求頭設置 User-Agent:

User-Agent: Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) 
            AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.76 Mobile Safari/537.36

代碼:

httpGet.setHeader("User-Agent", "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) ...");

獲取關注者/粉絲列表(API 直連)

實際抓包發現,關注/粉絲列表走 PC Web API,返回 JSON,無需 Jsoup 解析 HTML:

GET https://www.zhihu.com/api/v4/members/{user}/followers?
    per_page=10&include=data[*].employments,cover_url,allow_message,answer_count,
    articles_count,favorite_count,follower_count,gender,is_followed,
    message_thread_token,is_following,badge[?(type=best_answerer)].topics
    &limit=10&offset=0

需在 Cookie 中攜帶 z_c0 欄位。JSON 結構包含 paging(分頁資訊)與 data(用戶陣列)。

分頁抓取邏輯

while (!paging.is_end) {
    String nextUrl = paging.getNext();
    HttpGet get = new HttpGet(nextUrl);
    get.setHeader("Cookie", cookieWithZc0);
    // 執行請求 → 解析 JSON → 入庫 → 更新 paging
}

避坑指南

  • 請求頭必須帶 User-Agent + Cookie(z_c0),否則 403/401。
  • API 參數 include 需 URLEncode,建議用 URIBuilder 組裝。
  • 頻率控制:隨機睡眠 1-3 秒,降低封禁風險。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved