一、接口概述
京东关键字搜索接口允许开发者通过HTTP请求获取平台商品的关键字搜索结果,常用于商品比价、数据分析等场景。本文基于Python演示如何调用京东搜索接口,解析返回数据并实现基础功能。
二、技术实现步骤
接口地址分析 京东未完全公开API文档,需通过浏览器开发者工具(F12)抓取搜索请求。示例接口格式:
python Copy Code SEARCH_URL = "search.jd.com/Search"
核心参数说明
参数名 说明 示例值 keyword 搜索关键词 "手机" page 分页页码(每页30条) 1 sort 排序方式 "price_asc"
请求头伪装 需模拟浏览器请求,避免被反爬拦截:
python Copy Code headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36", "Referer": "www.jd.com/" }
三、Python代码实现 python Copy Code import requests from urllib.parse import urlencode import json
def jd_keyword_search(keyword, page=1, sort=None): base_url = "search.jd.com/Search?"
# 构造查询参数
params = {
"keyword": keyword,
"page": page,
"s": (page-1)*30 + 1 # 京东分页计算逻辑
}
if sort:
params["sort"] = sort
# 发送GET请求
try:
response = requests.get(
url=base_url + urlencode(params),
headers=headers,
timeout=10
)
response.raise_for_status()
return parse_search_result(response.text)
except Exception as e:
print(f"请求失败: {str(e)}")
return None
def parse_search_result(html): # 京东页面数据通常嵌入在HTML的JS变量中 start_str = "window.pageConfig = " start = html.find(start_str) + len(start_str) end = html.find("};", start) + 1 json_data = json.loads(html[start:end])
# 提取商品信息
products = []
for item in json_data["product"]:
product = {
"name": item.get("name", ""),
"price": item.get("op", "无价格"),
"shop": item.get("shop", {}).get("name", ""),
"comments": item.get("commentCount", 0)
}
products.append(product)
return products
示例调用
if name == "main": headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)..." } result = jd_keyword_search("蓝牙耳机", page=1, sort="price_asc") print(json.dumps(result[:2], indent=2, ensure_ascii=False))
四、响应数据处理示例 json Copy Code [ { "name": "华为FreeBuds 4E 无线蓝牙耳机", "price": "599.00", "shop": "华为京东自营旗舰店", "comments": 200000 }, { "name": "小米Redmi Buds 4 青春版", "price": "99.00", "shop": "小米京东自营旗舰店", "comments": 150000 } ]
五、注意事项
反爬机制
高频访问可能触发IP限制,建议添加time.sleep(3)间隔 使用代理IP池提升稳定性(参考requests-ip-rotator库)
数据合法性
禁止商用数据抓取,仅用于技术学习 遵守京东《Robots协议》(www.jd.com/robots.txt)
替代方案 如需稳定服务,建议申请京东联盟官方API(需企业资质):
python Copy Code
官方API示例(需授权)
OFFICIAL_API = "api.jd.com/routerjson"
六、总结
本文通过逆向分析实现了京东搜索接口调用,包含参数构造、反爬策略和数据解析。实际开发中建议优先使用官方接口,非官方方案需严格遵守平台规则。关注响应结构变化,及时更新解析逻辑。
扩展建议:结合多平台接口实现比价系统,或接入自然语言处理(NLP)优化搜索关键词推荐。