淘宝店铺商品获取接口 item_search_shop 技术分享

部署运行你感兴趣的模型镜像

在电商数据抓取领域,淘宝作为国内最大的电商平台之一,其数据的获取一直是众多开发者关注的焦点。item_search_shop 接口作为获取淘宝店铺所有商品信息的重要工具,为我们在数据分析、竞品研究等方面提供了有力支持。今天,就和大家详细分享一下这个接口的使用方法及相关技术要点。

接口基本介绍

item_search_shop 接口的主要功能是根据输入的淘宝店铺 ID,返回该店铺内所有商品的基本信息。这些信息涵盖了商品名称、价格、销量、商品链接、图片链接等关键数据,为我们全面了解店铺商品情况提供了基础。

接口调用参数详解

  1. 店铺 ID 参数(shopid):这是调用该接口的核心参数,准确无误地输入目标店铺的 ID 是成功获取数据的前提。店铺 ID 可以通过淘宝店铺链接获取,例如某店铺链接为 “店铺浏览-淘宝网”,其中 “xxxx” 即为店铺 ID。
  1. 分页参数(page):由于一个店铺的商品数量可能较多,接口采用分页返回数据。通过设置 page 参数,可以指定获取第几页的数据。每页返回的数据量通常有默认值,开发者可根据实际需求进行调整,但需注意不要超过接口限制,以免影响数据获取。
  1. 其他可选参数:接口还可能提供一些其他可选参数,如按商品类目筛选、按价格区间筛选等。合理运用这些参数,可以更精准地获取我们所需的数据,提高数据处理效率。

接口调用示例代码(以 Python 为例)

# coding:utf-8
# 注册key:https://o0b.cn/ijenni

"""
Compatible for python2.x and python3.x
requirement: pip install requests
"""
from __future__ import print_function
import requests
# 请求示例 url 默认请求参数已经做URL编码
url = "https://api-gw.onebound.cn/taobao/item_search_shop/?key=<您自己的apiKey>&secret=<您自己的apiSecret>&shop_id=440688975&seller_id=4273827547&page=1&sort="
headers = {
    "Accept-Encoding": "gzip",
    "Connection": "close"
}
if __name__ == "__main__":
    r = requests.get(url, headers=headers)
    json_obj = r.json()
    print(json_obj)

在上述代码中,首先定义了接口地址和请求参数,其中 “your_api_key” 需要替换为实际申请到的 API 密钥。通过发送 GET 请求获取数据,并使用 json 模块将返回的文本数据解析为 Python 字典格式,方便后续处理。

数据解析与处理

接口返回的数据通常是 JSON 格式,我们需要对其进行解析,提取出有用的信息。以商品名称、价格和销量为例:


for item in data["items"]:

item_name = item["title"]

item_price = item["price"]

item_sales = item["sales"]

print(f"商品名称: {item_name}, 价格: {item_price}, 销量: {item_sales}")

这段代码遍历返回数据中的 “items” 列表,逐一提取每个商品的名称、价格和销量信息,并进行打印输出。在实际应用中,我们可以将这些数据存储到数据库或进行进一步的数据分析。

注意事项

  1. API 使用频率限制:为了保证接口的稳定性和公平性,平台通常会对 API 的使用频率进行限制。开发者在使用 item_search_shop 接口时,要注意控制调用频率,避免因频繁调用而导致账号被封禁或接口请求失败。
  1. 数据准确性与时效性:淘宝平台上的商品信息可能随时发生变化,因此获取到的数据具有一定的时效性。在使用数据进行分析或其他应用时,要考虑到数据的更新频率,必要时定期重新获取数据,以确保数据的准确性。
  1. 合法性与合规性:在使用爬虫 API 获取淘宝数据时,务必遵守相关法律法规和平台规定。未经授权的恶意抓取行为可能会侵犯平台和商家的权益,给自己带来法律风险。建议在使用前仔细阅读平台的开发者文档和相关条款,确保合法合规使用接口。

item_search_shop 接口为我们获取淘宝店铺商品信息提供了便捷途径,但在使用过程中需要注意参数设置、数据解析、频率控制等多方面的问题。希望通过本次分享,能帮助大家更好地运用这个接口,在电商数据抓取与分析工作中取得更好的成果。

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

from selenium import webdriver from selenium.common.exceptions import TimeoutException, NoSuchElementException from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from pyquery import PyQuery as pq import time import openpyxl as op # 全局变量 count = 1 # 写入Excel商品计数 KEYWORD = input('输入搜索的商品关键词Keyword:') # 要搜索的商品的关键词 pageStart = int(input('输入爬取的起始页PageStart:')) # 爬取起始页 pageEnd = int(input('输入爬取的终止页PageEnd:')) # 爬取终止页 # 启动ChromeDriver服务 options = webdriver.ChromeOptions() options.add_argument('--disable-blink-features=AutomationControlled') options.add_experimental_option("excludeSwitches", ['enable-automation']) driver = webdriver.Chrome(options=options) driver.maximize_window() wait = WebDriverWait(driver, 20) def search_goods(): try: print("正在搜索: {}".format(KEYWORD)) driver.get('https://www.taobao.com') # 等待搜索框加载 input_box = wait.until( EC.presence_of_element_located((By.CSS_SELECTOR, "input#q")) # 等待搜索按钮可点击 search_button = wait.until( EC.element_to_be_clickable((By.CSS_SELECTOR, "button.btn-search"))) input_box.clear() input_box.send_keys(KEYWORD) search_button.click() # 等待搜索结果加载 wait.until( EC.presence_of_element_located((By.CSS_SELECTOR, "div.m-itemlist"))) print("搜索完成!") except Exception as exc: print("search_goods函数错误!Error:{}".format(exc)) raise def turn_to_page(target_page): try: if target_page == 1: return print(f"正在跳转到第{target_page}页") # 等待页码输入框加载 page_input = wait.until( EC.presence_of_element_located((By.CSS_SELECTOR, "input.form-input"))) # 等待确定按钮加载 confirm_btn = wait.until( EC.element_to_be_clickable((By.CSS_SELECTOR, "button.btn-jump"))) page_input.clear() page_input.send_keys(str(target_page)) confirm_btn.click() # 验证是否跳转成功 wait.until( EC.text_to_be_present_in_element( (By.CSS_SELECTOR, "li.item.active > span.num"), str(target_page))) print(f"已跳转到第{target_page}页") except Exception as exc: print(f"turn_to_page函数错误!跳转到第{target_page}页失败. Error:{exc}") raise def get_goods(page): global count try: # 滚动页面以加载所有商品 driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") time.sleep(2) # 获取页面HTML html = driver.page_source doc = pq(html) # 提取商品列表 items = doc('.items .item.J_MouserOnverReq').items() for item in items: try: # 提取商品信息 title = item.find('.title').text().strip() price = item.find('.price').text().strip() deal = item.find('.deal-cnt').text().strip() location = item.find('.location').text().strip() shop = item.find('.shopname').text().strip() # 处理包邮信息 postfree = item.find('.icon-service-free').text().strip() is_postfree = "包邮" if postfree else "不包邮" # 处理链接 title_url = item.find('.title a').attr('href') if title_url and not title_url.startswith('http'): title_url = 'https:' + title_url shop_url = item.find('.shopname').attr('href') if shop_url and not shop_url.startswith('http'): shop_url = 'https:' + shop_url img_url = item.find('.pic img').attr('src') if img_url and not img_url.startswith('http'): img_url = 'https:' + img_url # 构建商品信息字典 product = { 'Page': page, 'Num': count, 'title': title, 'price': price, 'deal': deal, 'location': location, 'shop': shop, 'isPostFree': is_postfree, 'url': title_url, 'shop_url': shop_url, 'img_url': img_url } print(product) # 写入Excel wb.cell(row=count+1, column=1, value=count) # 序号 wb.cell(row=count+1, column=2, value=title) # 标题 wb.cell(row=count+1, column=3, value=price) # 价格 wb.cell(row=count+1, column=4, value=deal) # 付款人数 wb.cell(row=count+1, column=5, value=location) # 地理位置 wb.cell(row=count+1, column=6, value=shop) # 店铺名称 wb.cell(row=count+1, column=7, value=is_postfree) # 是否包邮 wb.cell(row=count+1, column=8, value=title_url) # 商品链接 wb.cell(row=count+1, column=9, value=shop_url) # 商铺链接 wb.cell(row=count+1, column=10, value=img_url) # 图片链接 count += 1 except Exception as item_exc: print(f"处理商品时出错: {item_exc}") continue except Exception as exc: print(f"get_goods函数错误!Error:{exc}") raise def next_page(): try: next_btn = wait.until( EC.element_to_be_clickable((By.CSS_SELECTOR, "li.next > a"))) next_btn.click() # 等待下一页加载完成 wait.until( EC.presence_of_element_located((By.CSS_SELECTOR, "div.m-itemlist"))) return True except TimeoutException: print("已到达最后一页") return False except Exception as exc: print(f"next_page函数错误!Error:{exc}") return False def crawler_main(): try: # 建立Excel表格 global wb ws = op.Workbook() wb = ws.active # 写入表头 headers = ['Num', 'title', 'Price', 'Deal', 'Location', 'Shop', 'IsPostFree', 'Title_URL', 'Shop_URL', 'Img_URL'] for col, header in enumerate(headers, 1): wb.cell(row=1, column=col, value=header) # 开始爬取 search_goods() turn_to_page(pageStart) current_page = pageStart while current_page <= pageEnd: print(f"正在爬取第{current_page}页...") get_goods(current_page) if current_page < pageEnd: if not next_page(): break current_page += 1 except Exception as exc: print(f"crawler_main函数错误!Error:{exc}") finally: # 保存Excel filename = f"{KEYWORD}_{time.strftime('%Y%m%d-%H%M')}_FromTB.xlsx" ws.save(filename=filename) print(f"{filename} 存储成功~") driver.quit() if __name__ == '__main__': crawler_main() 爬取不到数据
05-25
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值