写点什么

如何高效爬取淘宝天猫商品数据?【官方 API 与非官方接口全解析】

作者:Geek_9dbf95
  • 2025-03-10
    江西
  • 本文字数:1521 字

    阅读完需:约 5 分钟

如何高效爬取淘宝天猫商品数据?【官方API与非官方接口全解析】

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

  1. 官方 API 方案:合法合规,需企业资质,推荐长期稳定使用

  2. 非官方接口方案:适合快速验证需求,需技术对抗反爬机制


一、官方 API 方案详解


  1. 天猫开放平台接口


  • 适用场景:企业级数据采集需求

  • 接口优势


。数据完整度高(含商品详情、价格、评论等)

。官方维护,稳定性强

。支持分页和批量查询


开发步骤:

  1. 注册开发者账号:open.taobao.com

  2. 申请接口权限:


。taobao.item.get:商品详情

。taobao.items.search:商品搜索


安装 SDK

pip install alibabacloud-python-sdk-core
复制代码

签名请求示例:

from alibabacloud_tea_openapi import models as open_api_modelsfrom alibabacloud_tbk_dg import models as tbk_dg_modelsfrom 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"}
复制代码

关键参数说明:


2.Python 实现示例

import requestsimport 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.行为模拟

import timeimport random
# 随机延迟(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 条用户信息保护规定

  • 避免爬取用户隐私数据(如收货地址)


2.反爬对抗:

  • 定期更新 JS 解密逻辑

  • 使用分布式高匿代理(推荐 Bright Data)


3.性能优化:

  • 异步请求(aiohttp+asyncio)

  • 结果缓存(Redis LRU 策略)


六、扩展应用场景


  1. 商品比价监控:定时获取价格波动数据

  2. 竞品分析:监控同类商品销量、评价

  3. 库存预警:监听 stockQuantity 字段变化

  4. 评论情感分析:结合 NLP 处理用户评价


七、推荐工具链


用户头像

Geek_9dbf95

关注

还未添加个人签名 2024-06-04 加入

还未添加个人简介

评论

发布
暂无评论
如何高效爬取淘宝天猫商品数据?【官方API与非官方接口全解析】_批量获取企业数据_Geek_9dbf95_InfoQ写作社区