利用 Python 爬虫获取淘宝商品 SKU 详细信息

在电商领域,SKU(Stock Keeping Unit)是商品库存进出计量的基本单元。对于淘宝商品来说,SKU 信息通常包括不同的规格、价格、库存等详细信息。通过 Python 爬虫技术,我们可以高效地获取这些信息,从而为数据分析、价格监控或其他业务需求提供支持。以下将详细介绍如何使用 Python 实现获取淘宝商品 SKU 详细信息的功能。

一、准备工作

1. 安装必要的库

在开始之前,确保已经安装了以下 Python 库:

  • Selenium:用于模拟浏览器操作,获取动态加载的内容。
  • PyQuery:用于解析 HTML 内容。
  • openpyxl:用于将数据保存到 Excel 文件中。

如果尚未安装这些库,可以通过以下命令进行安装:

bash 复制代码
pip install selenium pyquery openpyxl

2. 下载 ChromeDriver

确保你已经下载了与你的 Chrome 浏览器版本匹配的 ChromeDriver,并将其路径添加到系统的 PATH 环境变量中。

二、代码实现

以下是使用 Python 爬虫获取淘宝商品 SKU 详细信息的完整代码示例。

1. 引入必要的库

Python 复制代码
from selenium import webdriver
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

2. 初始化 WebDriver

Python 复制代码
# 启动 ChromeDriver 服务
options = webdriver.ChromeOptions()
options.add_experimental_option("excludeSwitches", ['enable-automation'])
driver = webdriver.Chrome(options=options)
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {"source": """Object.defineProperty(navigator, 'webdriver', {get: () => undefined})"""})
driver.maximize_window()
driver.get('https://www.taobao.com')
wait = WebDriverWait(driver, 20)

3. 搜索商品

Python 复制代码
def search_goods(keyword):
    try:
        print(f"正在搜索: {keyword}")
        input_element = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "#q")))
        submit_button = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '#J_TSearchForm > div.search-button > button')))
        input_element.send_keys(keyword)
        submit_button.click()
        time.sleep(2)
        print("搜索完成!")
    except Exception as exc:
        print(f"search_goods 函数错误!Error:{exc}")

4. 获取商品列表信息

Python 复制代码
def get_goods(page):
    try:
        print(f"正在获取第 {page} 页的商品信息")
        html = driver.page_source
        doc = pq(html)
        items = list(doc('div.m-itemlist .items .item').items())

        for item in items:
            title = item.find('.title').text()
            price = item.find('.price').text()
            deal = item.find('.deal-cnt').text()
            location = item.find('.location').text()
            shop = item.find('.shop').text()
            product = {
                'title': title,
                'price': price,
                'deal': deal,
                'location': location,
                'shop': shop
            }
            print(product)
    except Exception as exc:
        print(f"get_goods 函数错误!Error:{exc}")

5. 翻页操作

Python 复制代码
def page_turning(page_number):
    try:
        print(f"正在翻页: 第 {page_number} 页")
        submit = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.m-page .next')))
        submit.click()
        wait.until(EC.text_to_be_present_in_element((By.CSS_SELECTOR, '.m-page .curr'), str(page_number)))
        print(f"已翻至: 第 {page_number} 页")
    except Exception as exc:
        print(f"page_turning 函数错误!Error:{exc}")

6. 主程序

Python 复制代码
if __name__ == '__main__':
    keyword = input('输入搜索的商品关键词 Keyword:')
    page_start = int(input('输入爬取的起始页 PageStart:'))
    page_end = int(input('输入爬取的终止页 PageEnd:'))

    search_goods(keyword)
    get_goods(page_start)
    for i in range(page_start + 1, page_end + 1):
        page_turning(i)
        get_goods(i)

三、代码解释

  1. 搜索商品

    • 使用 Selenium 模拟浏览器操作,输入关键字并点击搜索按钮。
    • 等待页面加载完成,并处理可能出现的滑块验证。
  2. 获取商品信息

    • 使用 PyQuery 解析页面 HTML,提取商品的标题、价格、销量、店铺名称等信息。
    • 将提取到的信息打印到控制台。
  3. 翻页操作

    • 模拟点击"下一页"按钮,实现翻页操作。
    • 等待页面加载完成,并验证是否成功翻页。
  4. 主程序

    • 输入搜索关键字和爬取的页码范围。
    • 调用搜索函数和翻页函数,依次获取每一页的商品信息。

四、注意事项

  1. 反爬机制

    • 淘宝可能会对爬虫进行限制,例如限制 IP 访问频率、检测异常请求等。如果遇到这种情况,可以尝试以下方法:

      • 使用代理服务器(如代理 IP 池)。
      • 增加请求间隔时间(使用 time.sleep())。
      • 模拟更多浏览器行为(如设置更多请求头)。
  2. 动态加载内容

    • 淘宝的部分内容可能是通过 JavaScript 动态加载的。如果发现获取到的 HTML 内容中缺少某些数据,可以考虑使用 Selenium 来模拟浏览器操作。
  3. 数据存储

    • 如果需要将爬取到的数据存储起来,可以将其保存到文件(如 CSV、JSON)或数据库中。

五、总结

通过上述步骤和代码,你可以使用 Python 实现获取淘宝商品 SKU 详细信息的功能。希望这个示例对你有所帮助!

相关推荐
前端开发张小七1 分钟前
14.Python Socket客户端开发指南
前端·python
Y1nhl10 分钟前
搜广推校招面经六十六
pytorch·python·深度学习·机器学习·广告算法·推荐算法·搜索算法
码界筑梦坊37 分钟前
基于Django的二手交易校园购物系统
大数据·后端·python·信息可视化·django
XYN612 小时前
【嵌入式学习3】基于python的tcp客户端、服务器
服务器·开发语言·网络·笔记·python·学习·tcp/ip
一一代码2 小时前
ide技术
ide·python
No0d1es2 小时前
CCF GESP Python编程 三级认证真题 2025年3月
python·青少年编程·gesp·ccf·三级
JobDocLS2 小时前
深度学习环境安装
python
二狗哈3 小时前
go游戏后端开发24:写完赢三张游戏
python·游戏·golang
明月看潮生3 小时前
青少年编程与数学 02-016 Python数据结构与算法 03课题、数组与链表
数据结构·python·青少年编程·编程与数学
niuniu_6663 小时前
针对 Python 3.7.0,以下是 Selenium 版本的兼容性建议和安装步骤
开发语言·chrome·python·selenium·测试工具