Python 爬虫获得淘宝商品详情 数据【淘宝商品API】

使用 Python 爬取淘宝商品详情数据需要注意合法性 和反爬机制。淘宝有严格的反爬虫策略,直接爬取可能导致 IP 被封、账号受限等,且需遵守《电子商务法》及网站 robots 协议。以下是技术实现思路(仅供学习参考,请勿用于商业用途):

一、核心挑战与应对

  1. 反爬机制:淘宝会检测 User-Agent、Cookie、请求频率,甚至使用验证码、滑块验证。
  2. 动态加载:商品数据多通过 JavaScript 动态渲染,直接请求 HTML 难以获取完整信息。
  3. 登录限制:部分商品详情需登录后查看,需处理登录状态。

淘宝/天猫获得淘宝商品详情 API 返回值说明

item_get-获得淘宝商品详情

taobao.item_get

公共参数

名称 类型 必须 描述
key String 是 调用key(必须以GET方式拼接在URL中)
secret String 是 调用密钥
api_name String 是 API接口名称(包括在请求地址中)item_search,item_get,item_search_shop等
cache String 否 yes,no默认yes,将调用缓存的数据,速度比较快
result_type String 否 json,jsonu,xml,serialize,var_export返回数据格式,默认为json,jsonu输出的内容中文可以直接阅读
lang String 否 cn,en,ru翻译语言,默认cn简体中文
version String 否 API版本

请求参数

请求参数:num_iid=652874751412&is_promotion=1

参数说明:num_iid:淘宝商品ID

is_promotion:是否获取取促销价

响应参数

Version: Date:2022-04-04

名称 类型 必须 示例值 描述
item item\[\] 1 宝贝详情数据(部分商品获取不到)

二、实现思路(基于 Selenium 模拟浏览器)

使用 Selenium 模拟真实用户浏览行为,绕过部分反爬,步骤如下:

1. 环境准备

安装依赖:

复制代码
pip install selenium webdriver-manager
2. 代码示例(获取商品基本信息)

python

运行

复制代码
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from webdriver_manager.chrome import ChromeDriverManager
import time
import random

# 初始化浏览器(模拟真实用户)
options = webdriver.ChromeOptions()
# 添加随机User-Agent
user_agents = [
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36",
    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.0 Safari/605.1.15"
]
options.add_argument(f"user-agent={random.choice(user_agents)}")
# 禁用自动化控制特征
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option("useAutomationExtension", False)

driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
# 规避webdriver检测
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
    "source": """
        Object.defineProperty(navigator, 'webdriver', {
            get: () => undefined
        })
    """
})

def get_taobao_item_detail(item_id):
    url = f"https://item.taobao.com/item.htm?id={item_id}"
    driver.get(url)
    
    try:
        # 等待页面加载(处理可能的登录弹窗,若有则手动登录一次后保存Cookie)
        WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.CSS_SELECTOR, ".tb-main-title"))
        )
        
        # 随机延迟,模拟人类浏览
        time.sleep(random.uniform(2, 4))
        
        # 提取商品信息(选择器可能随页面更新而变化,需自行调试)
        item = {
            "title": driver.find_element(By.CSS_SELECTOR, ".tb-main-title").text.strip(),
            "price": driver.find_element(By.CSS_SELECTOR, ".tb-rmb-num").text.strip(),
            "sales": driver.find_element(By.CSS_SELECTOR, ".tm-ind-sellCount .tm-count").text.strip(),
            "shop": driver.find_element(By.CSS_SELECTOR, ".tb-shop-name a").text.strip()
        }
        print("商品信息:", item)
        return item
    
    except Exception as e:
        print("获取失败:", str(e))
        return None
    finally:
        # 关闭浏览器(实际使用可保持连接,复用Cookie)
        # driver.quit()
        pass

# 示例:爬取某个商品(替换为实际商品ID)
get_taobao_item_detail("1234567890")  # 此处ID为示例,需替换为真实商品ID

三、关键优化(反爬应对)

  1. Cookie 持久化:手动登录一次后,保存 Cookie 到文件,后续请求携带 Cookie 避免重复登录。
  2. 代理 IP 池:使用代理服务(如阿布云)轮换 IP,避免本地 IP 被封。
  3. 随机行为模拟 :
    • 随机请求间隔(2-5 秒)
    • 模拟鼠标滚动、点击等操作
  4. 解析动态接口 :通过浏览器开发者工具(F12)分析网络请求,找到返回 JSON 数据的接口(如https://h5api.m.taobao.com/h5/mtop.taobao.detail.getdetail/6.0/),直接请求接口效率更高(需破解签名参数,难度较大)。

四、注意事项

  1. 合法性:淘宝商品数据受版权保护,未经允许爬取可能涉嫌侵权,建议通过淘宝开放平台(如 商品API接口)获取授权数据。
  2. 反爬风险:即使优化后,仍可能被检测,导致账号封禁或 IP 限制。
  3. 页面变化:淘宝频繁更新页面结构,选择器(CSS/XPath)需定期调试更新。
相关推荐
龙亘川几秒前
探索智慧文化服务:建设初衷、整体架构、技术支撑、发展现状与实践影响
大数据·数据库·架构
计算机毕业编程指导师3 分钟前
【Python毕设选题推荐】基于Hadoop+Django的奥斯卡奖获奖数据可视化分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习 深度学习
大数据·hadoop·python·计算机·毕业设计·课程设计·奥斯卡奖
风早爽太4 分钟前
Python 学习笔记:数据库迁移工具 ‌Alembic
数据库·python·fastapi·alembic
外收内放7 分钟前
06 | 优化篇① 游戏改名《鳞光纪》了:这次翻新,把“脸“全换了
python·游戏·pygame
AIGC小尼8 分钟前
8G 显存零基础本地部署 AI 漫剧全流程|ComfyUI+Wan2.2+FFmpeg 离线成片完整方案(含代码 / 指令 / 排坑)
人工智能·ffmpeg·php·comfyui·ai漫剧
悟天特斯9 分钟前
AI驱动的楼宇节能:从“经验省电“到“算法能效“的进化之路
人工智能·物联网
破无差11 分钟前
人工智能训练师(三级)理论知识复习题-KimiK3的参考答案
人工智能
计算机毕业编程指导师11 分钟前
【大数据毕设选题】基于Spark的电信网络诈骗话术语义特征挖掘分析系统源码 毕业设计 选题推荐 数据分析 机器学习 深度学习
大数据·hadoop·python·spark·毕业设计·课程设计·网络诈骗
网络毒刘13 分钟前
AtomGit Actions + AI 评审草稿:PR 描述自动生成与安全敏感词门禁示例
人工智能·安全
ai_xiaogui13 分钟前
PanelAI 1.1.1重磅更新:秒级安装脚本优化 + 无公网IP算力节点组网,私有化AI管理平台全面升级
人工智能·网络协议·tcp/ip·api聚合管理·开发者ai一键部署·ai底层架构解析·ai应用快速变现