You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用JSON接口爬取Shopee商品及评论时如何获取商品URL

核心结论

你不需要额外提取商品URL,第一步返回的JSON中已经包含第二步评论接口所需的shopid和itemid两个核心字段,可直接复用,省去拼接URL再解析的步骤。如果确实需要商品详情页URL,也可以通过固定规则直接拼接生成。


方案1:直接复用shopid和itemid(推荐,效率更高)

修改第一步的遍历代码,额外存储每个商品的shopid和itemid:

titles_list = []
prices_list = []
sold_list = []
ratings_list = []
# 新增两个列表存储评论接口需要的核心参数
shop_id_list = []
item_id_list = []

for item in r['items']:
    titles_list.append(item['name'])
    prices_list.append(item['price_min'])
    sold_list.append(item['historical_sold'])
    ratings_list.append(item['item_rating']['rating_star'])
    # 直接提取返回结果里自带的shopid和itemid
    shop_id_list.append(item['shopid'])
    item_id_list.append(item['itemid'])

之后第二步爬评论时,直接遍历shop_id_list和item_id_list即可,无需手动填写URL,也不需要做正则匹配提取参数,直接把参数填入评论接口就能正常请求。


方案2:生成商品详情页URL(如果需要存储URL备用)

Shopee新加坡站的商品详情页URL遵循固定规则:
https://shopee.sg/[商品名称URL编码]-i.[shopid].[itemid]
其中商品名称编码部分不影响跳转校验,只要i.[shopid].[itemid]部分正确即可正常访问。
拼接URL的代码示例:

from urllib.parse import quote
# 新增列表存储商品URL
product_url_list = []

for item in r['items']:
    # 原有提取逻辑不变
    titles_list.append(item['name'])
    prices_list.append(item['price_min'])
    sold_list.append(item['historical_sold'])
    ratings_list.append(item['item_rating']['rating_star'])
    # 拼接标准商品详情页URL
    encoded_name = quote(item['name'])
    product_url = f"https://shopee.sg/{encoded_name}-i.{item['shopid']}.{item['itemid']}"
    product_url_list.append(product_url)

注意事项

  • 批量爬取时建议在两次请求之间加1-3秒的延迟,避免触发Shopee的反爬机制返回429错误
  • 评论接口的offset最大支持到1000,单商品最多只能爬取1000条公开评论

内容的提问来源于stack exchange,提问作者Donovan Tan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 06:12:01