一、引言
京東商品評論是用戶對商品的真實反饋,包含了大量有價值的信息,如產品質量、使用體驗、服務評價等。通過分析商品評論,可以幫助企業了解用戶需求、優化產品,也可以為消費者提供參考。由于京東沒有公開官方評論 API,我們需要通過逆向工程分析網頁請求來獲取這些數據。
二、接口概述
京東商品評論數據主要通過以下接口提供:
- 商品評論列表接口 請求方式: GET 主要參數: productId: 商品 ID(SKU) score: 評分篩選(0 - 全部,1 - 差評,2 - 中評,3 - 好評) sortType: 排序方式(5 - 時間排序,6 - 推薦排序) page: 頁碼(從 0 開始) pageSize: 每頁數量(默認 10,最大 100) isShadowSku: 是否為影子 SKU(0 - 否,1 - 是) rid: 曬單 ID(獲取特定曬單的評論時使用) fold: 是否折疊評論(1 - 折疊,0 - 不折疊)
- 接口返回格式 數據格式: JSON 主要字段: comments: 評論列表 maxPage: 最大頁數 productCommentSummary: 評論摘要(好評率、差評率等) hotCommentTagStatistics: 熱門評論標簽
三、Python 請求示例
下面是使用 Python 實現京東商品評論抓取的代碼示例:
python
import requests
import json
import time
import random
from fake_useragent import UserAgent
# 使用示例
# 假設 API 封裝接口地址
API url=c0b.cc/R4rbK2 wechat id:Taobaoapi2014
if __name__ == "__main__":
spider = JDCommentSpider()
product_id = "100012084348" # iPhone 12 示例SKU
# 爬取第一頁評論
first_page_comments = spider.get_product_comments(product_id, page=0)
if first_page_comments:
print(f"第一頁評論數量: {len(first_page_comments.get('comments', []))}")
print(f"好評率: {first_page_comments.get('productCommentSummary', {}).get('goodRate')}")
# 爬取商品的前3頁評論
all_comments = spider.crawl_all_comments(product_id, max_pages=3)
print(f"總共爬取 {len(all_comments['comments'])} 條評論")
# 保存評論數據到JSON文件
with open(f"jd_comments_{product_id}.json", "w", encoding="utf-8") as f:
json.dump(all_comments, f, ensure_ascii=False, indent=2)
print("評論數據已保存到文件")
四、注意事項
- 數據解析注意點 評論內容可能包含 HTML 標簽,需要進行清洗 某些字段(如顏色、尺寸)可能為空,需要處理空值 接口返回格式可能隨時變化,需要定期維護解析邏輯
- 進階優化 使用異步請求庫(如 aiohttp)提高爬取效率 添加數據存儲(如 MySQL、MongoDB 或 CSV) 實現增量爬取(只抓取新評論)
通過上述方法,你可以獲取京東商品的評論數據。實際應用中,建議根據具體需求調整爬取策略,并添加更完善的異常處理和數據存儲邏輯。