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

導出 QQ 群相冊評論:Cookie 模擬登錄 + 正則解析爬取方案

     編輯:程式設計綜合問答

技術路線

  1. 獲取登錄 Cookie:手動登錄 https://photo.qzone.qq.com,開發者工具 Application → Cookies 導出 p_skey、uin 等關鍵字段。
  2. 請求相冊列表/評論接口:分析網頁版請求,通常為 GET https://h5.qzone.qq.com/proxy/domain/photo.qzone.qq.com/cgi-bin/...,參數含 uin、album_id、page。
  3. 攜帶 Cookie 發送請求:Python requests / Java HttpClient 設置 Cookie Header。
  4. 解析 JSON/HTML:響應多為 JSONP 或 HTML 片段,用 re/json.loads/BeautifulSoup 提取評論內容、時間、用戶。
  5. 分頁循環:直到 has_more=false 或返回空列表。

Python 最小示例

import requests, re, json, time

cookies = {
    'uin': 'o123456789',
    'p_skey': 'abcdefg...',
    # ... 其他必要 cookie
}
headers = {'User-Agent': 'Mozilla/5.0 ...', 'Referer': 'https://photo.qzone.qq.com/'}

def fetch_comments(album_id, page=1):
    url = 'https://h5.qzone.qq.com/proxy/domain/photo.qzone.qq.com/cgi-bin/cgi_list_comment'
    params = {'uin': '123456789', 'album_id': album_id, 'page': page, 'num': 20}
    r = requests.get(url, params=params, cookies=cookies, headers=headers)
    # 響應為 JSONP: _Callback({...})
    data = json.loads(re.search(r'\((.*)\)', r.text).group(1))
    return data.get('data', {}).get('comments', [])

all_comments = []
page = 1
while True:
    comments = fetch_comments('ALBUM_ID', page)
    if not comments: break
    all_comments.extend(comments)
    page += 1
    time.sleep(1)  # 禮貌延遲

# 保存
with open('comments.json', 'w', encoding='utf-8') as f:
    json.dump(all_comments, f, ensure_ascii=False, indent=2)

法律與道德提醒

  • 僅供個人學習/備份自身數據,嚴禁大規模抓取他人隱私、商業用途。
  • 遵守 robots.txt、QQ 服務協議,控制頻率,避免封禁 IP/賬號。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved