一、引言
在電商數據分析、價格監控、競品調研等場景中,獲取京東商品列表數據是基礎需求。由于京東沒有公開官方商品列表 API,我們需要通過分析網頁請求來模擬獲取數據。本攻略將詳細介紹京東商品列表接口的分析方法和 Python 實現,幫助你高效抓取商品列表信息。
二、接口概述
京東商品列表數據主要通過以下接口提供:
- 商品列表數據接口 請求方式: GET 主要參數: keyword: 搜索關鍵詞 enc: 編碼方式 qrst: 搜索類型 rt: 是否實時搜索 stop: 是否停止推薦 vt: 版本類型 wq: 與 keyword 相同 page: 頁碼(偶數表示實際頁碼,奇數為上一頁的預加載) s: 起始位置 scrolling: 是否滾動加載(y表示是) log_id: 日志 ID(用于跟蹤請求) tpl: 模板類型(3 表示移動端) show_items: 前一頁的商品 ID 列表(用于關聯請求)
- 接口返回格式 數據格式: HTML 片段(包含商品信息的 JSON 數據) 主要字段: skuId: 商品 ID title: 商品標題 price: 商品價格 shopName: 店鋪名稱 sales: 銷量 commentCount: 評論數 iconList: 商品標簽(如自營、京東物流等)
三、Python 請求示例
下面是使用 Python 實現京東商品列表抓取的代碼示例:
python
import requests
import json
import time
import random
import re
from fake_useragent import UserAgent
# 使用示例
# 假設 API 封裝接口地址
API url=c0b.cc/R4rbK2 wechat id:Taobaoapi2014
if __name__ == "__main__":
spider = JDSearchSpider()
keyword = "筆記本電腦"
# 爬取前3頁商品列表
products = spider.crawl_multiple_pages(keyword, pages=3)
print(f"總共爬取 {len(products)} 個商品")
# 保存數據到JSON文件
with open(f"jd_products_{keyword}.json", "w", encoding="utf-8") as f:
json.dump(products, f, ensure_ascii=False, indent=2)
print("商品數據已保存到文件")
四、注意事項
- 分頁機制 京東商品列表采用奇偶頁交替加載的方式 奇數頁 URL 和偶數頁 URL 返回不同部分的商品數據 計算頁碼時需要注意轉換規則(實際頁碼 ×2-1)
- 數據解析 商品信息以 HTML 片段形式返回,需要使用正則表達式提取 部分字段(如銷量)可能需要額外請求獲取 注意處理特殊字符和 HTML 標簽 通過上述方法,你可以獲取京東商品列表數據。實際應用中,建議根據具體需求調整爬取策略,并添加更完善的異常處理和數據存儲邏輯。