关键词搜索淘宝商品数据接口技术方法(taobao.item_search)

淘宝提供了商品搜索数据的开放接口,可以通过关键词搜索淘宝商品数据。以下是使用淘宝开放平台的商品搜索接口的基本步骤:

  1. 注册并登录淘宝开放平台,创建一个应用。

  2. 获取应用的App Key和App Secret,并获得Access Token。

  3. 使用合适的API请求方式(如HTTP GET或HTTP POST),调用商品搜索接口。接口路径一般为https://eco.taobao.com/router/rest。

  4. 在请求参数中设置必要的参数,包括method(固定为taobao.tbk.dg.material.optional)、app_key、sign_method、timestamp、format、version等。

  5. 在请求参数中设置搜索相关的参数,如q(搜索关键词)、cat(商品类目ID)、itemloc(所在地)、sort(排序方式)等。

  6. 发送API请求,获取响应数据。可以使用开发工具如Postman进行测试。

  7. 解析和处理响应数据,获取所需的商品信息。

  8. 根据需求进行数据处理,如数据筛选、排序、展示等。

  9. 还有一种方式可以根据关键词搜索或者是商品类目ID封装关键词搜索淘宝商品列表数据接口。

taobao.item_search-获取淘宝商品列表数据接口返回值说明

1.请求方式:HTTP POST GET; 复制Taobaoapi2014获取APISDK文件。

2.请求URL地址:c0b.cc/30G0f2

3.请求参数:

请求参数:q=女装&start_price=0&end_price=0&page=1&cat=0&discount_only=&sort=&page_size=&seller_info=&nick=&ppath=&imgid=&filter=

参数说明:q:搜索关键字
cat:分类ID
start_price:开始价格
end_price:结束价格
sort:排序[bid,_bid,bid2,_bid2,_sale,_credit]
  (bid:总价,bid2:商品价格,sale:销量,credit信用,加_前缀为从大到小排序)
page:页数

4.请求示例:

请求示例 url 默认请求参数已经URL编码处理
curl -i "api-gw.xxx.cn/taobao/item_search/?key=<您自己的apiKey>&secret=<您自己的apiSecret>&q=女装&start_price=0&end_price=0&page=1&cat=0&discount_only=&sort=&page_size=&seller_info=&nick=&ppath=&imgid=&filter="

5.返回参数

 

需要注意的是,调用淘宝开放平台的接口需要进行签名验证,确保请求的安全性。具体的接口参数和使用方法可以参考淘宝开放平台的文档和示例代码。

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、付费专栏及课程。

余额充值