利用 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 详细信息的功能。希望这个示例对你有所帮助!

相关推荐
Niuguangshuo1 小时前
DeepFilterNet 3:端侧实时全带降噪的开源标杆
python
第一程序员2 小时前
AI 辅助编程的 7 个误区:把模型当高级搜索引擎是对它的最大浪费
python·rust·github
Groundwork Explorer3 小时前
W5500 网卡编程初始化与使用指南
python·单片机
逸Y 仙X3 小时前
MCP(模型控制协议)完全指南:从核心概念到实战开发
python·大模型·llm·ai编程·mcp
WILLF4 小时前
前端视角:Python requests vs JS axios
前端·python
哒哒哒5285204 小时前
69. Python: 核心语法-面向对象基础-案例(教务系统)
python
何以解忧,唯有..4 小时前
Python 中获取目录操作完全指南
windows·python·microsoft
南京云森杉木桩5 小时前
常见打桩木品牌推荐,选对材质让工程更稳固
人工智能·python·材质
总有刁民想爱朕ha5 小时前
Python PyQt5图片批量转MP4视频工具:本地离线免费无水印,完整代码
开发语言·python·qt
zyj8890915 小时前
濮阳工厂目视化设计安全警示牌材质怎么选耐用
python·安全·材质