全部
常见问题
产品动态
精选推荐
功能建议

分析中 已回复 待规划 {{opt.name}}
分析中 已回复 待规划
如何高效爬取天猫商品数据?官方API与非官方接口全解析

管理 管理 编辑 删除

一、方案概述

本文提供两种爬取天猫商品数据的技术方案:

  1. 官方API方案:合法合规,需企业资质,推荐长期稳定使用
  2. 非官方接口方案:适合快速验证需求,需技术对抗反爬机制

二、官方API方案详解

1. 天猫开放平台接口

  • 适用场景:企业级数据采集需求
  • 接口优势
  • 数据完整度高(含商品详情、价格、评论等)
  • 官方维护,稳定性强
  • 支持分页和批量查询

开发步骤:

  1. 注册开发者账号:https://o0b.cn/9CDVa2
  2. 申请接口权限
  • taobao.item.get:商品详情
  • taobao.items.search:商品搜索
  1. 安装SDK

pip install alibabacloud-python-sdk-core

  1. 签名请求示例

from alibabacloud_tea_openapi import models as open_api_models

from alibabacloud_tbk_dg import models as tbk_dg_models

from alibabacloud_tbk_dg.client import Client


config = open_api_models.Config(

app_key="your_app_key",

app_secret="your_app_secret",

region_id="cn-hangzhou"

)

client = Client(config)


request = tbk_dg_models.TbkItemInfoGetRequest(

num_iid=654321 # 商品ID

)

response = client.tbk_item_info_get(request)

print(response.body)

三、非官方接口实战

1. 接口逆向分析

核心API:

GET https://h5api.m.taobao.com/h5/mtop.taobao.detail.getdetail/6.0/

参数构造:

{

"itemNumId": "654321",

"isForbidBuyItem": false,

"isForbidPromotion": false,

"sellerId": "123456"

}

关键参数说明:

参数名作用生成方式
sign签名验证JS逆向生成(需解密)
t时间戳当前时间戳(秒级)
User-Agent浏览器指纹随机生成(如iOS/Android)

2. Python实现示例

import requests

import execjs


# JS解密逻辑(需根据实际逆向代码调整)

with open('sign.js', 'r') as f:

sign_js = f.read()

ctx = execjs.compile(sign_js)

sign = ctx.call('generate_sign', params)


headers = {

'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.1 Mobile/15E148 Safari/604.1',

'Cookie': 't=your_cookie; cna=xxx;'

}


url = f'https://h5api.m.taobao.com/h5/mtop.taobao.detail.getdetail/6.0/?sign={sign}&data={data}'

response = requests.get(url, headers=headers)

print(response.json())

四、反反爬策略

1. 动态参数对抗

  • sign参数:定期更新解密逻辑
  • t参数:每次请求生成新时间戳
  • User-Agent:使用fake_useragent轮换

2. 代理池方案

from requests_rotating_proxy import RotatingProxyManager


proxy_manager = RotatingProxyManager([

'http://user:pass@proxy1.com:8080',

'http://user:pass@proxy2.com:8080'

])

response = requests.get(url, proxies=proxy_manager.get_proxy())

3. 行为模拟


# 随机延迟(0.5-2秒)

time.sleep(random.uniform(0.5, 2.0))


# 模拟真实用户行为

# 可结合selenium/playwright添加鼠标移动、点击等操作

五、数据解析与存储

1. 核心字段提取

data = response.json()

item_info = {

'商品ID': data['itemNumId'],

'标题': data['title'],

'价格': data['price']['viewPrice'],

'销量': data['soldQuantity'],

'评论数': data['reviewCount']

}

2. 存储方案

  • 结构化存储:MySQL/PostgreSQL
  • 分布式存储:HBase/Elasticsearch
  • 临时缓存:Redis(存储已爬取商品ID)

六、注意事项

  1. 法律合规
  • 遵守《电子商务法》第24条用户信息保护规定
  • 避免爬取用户隐私数据(如收货地址)
  1. 反爬对抗
  • 定期更新JS解密逻辑
  • 使用分布式高匿代理(推荐Bright Data)
  1. 性能优化
  • 异步请求(aiohttp+asyncio)
  • 结果缓存(Redis LRU策略)

七、扩展应用场景

  1. 商品比价监控:定时获取价格波动数据
  2. 竞品分析:监控同类商品销量、评价
  3. 库存预警:监听stockQuantity字段变化
  4. 评论情感分析:结合NLP处理用户评价

八、推荐工具链

工具类型推荐工具
浏览器自动化Playwright(首选)、Selenium
请求库aiohttp(异步)、httpx(HTTP/2)
数据解析lxml(XPath)、BeautifulSoup
JS逆向Charles + Jadx + PyExecJS
代理池Bright Data、Oxylabs
倘若您遭遇任何疑惑,或者存在更进一步的需求,烦请随时通过私信或评论。


{{voteData.voteSum}} 人已参与
支持
反对
请登录后查看

1f2b05e1edf5 最后编辑于2026-05-29 16:54:15

快捷回复
回复
回复
回复({{post_count}}) {{!is_user ? '我的回复' :'全部回复'}}
排序 默认正序 回复倒序 点赞倒序

{{item.user_info.nickname ? item.user_info.nickname : item.user_name}} LV.{{ item.user_info.bbs_level || item.bbs_level }}

作者 管理员 企业

{{item.floor}}# 同步到gitee 已同步到gitee {{item.is_suggest == 1? '取消推荐': '推荐'}}
{{item.is_suggest == 1? '取消推荐': '推荐'}} 【已收集】
{{item.floor}}# 沙发 板凳 地板 {{item.floor}}# 【已收集】
{{item.user_info.title || '暂无简介'}}
附件

{{itemf.name}}

{{item.created_at}}  {{item.ip_address}}
打赏
已打赏¥{{item.reward_price}}
{{item.like_count}}
分享
{{item.showReply ? '取消回复' : '回复'}}
删除
回复
回复

{{itemc.user_info.nickname}}

{{itemc.user_name}}

回复 {{itemc.comment_user_info.nickname}}

附件

{{itemf.name}}

{{itemc.created_at}}
打赏
已打赏¥{{itemc.reward_price}}
{{itemc.like_count}}
{{itemc.showReply ? '取消回复' : '回复'}}
删除
回复
回复
收起 展开更多
查看更多
打赏
已打赏¥{{reward_price}}
24
{{like_count}}
{{collect_count}}
添加回复 ({{post_count}})

相关推荐

快速安全登录

使用微信扫码登录
回复
回复
问题:
问题自动获取的帖子内容,不准确时需要手动修改. [获取答案]
答案:
提交
bug 需求 取 消 确 定
打赏金额
当前余额:¥{{rewardUserInfo.reward_price}}
{{item.price}}元
请输入 0.1-{{reward_max_price}} 范围内的数值
打赏成功
¥{{price}}
完成 确认打赏

微信登录/注册

切换手机号登录

{{ bind_phone ? '绑定手机' : '手机登录'}}

{{codeText}}
切换微信登录/注册
暂不绑定
CRMEB客服
CRMEB咨询热线 400-8888-794

扫码领取产品资料

功能清单
思维导图
安装教程
CRMEB开源商城下载 源码下载 CRMEB帮助文档 帮助文档
返回顶部 返回顶部
CRMEB客服