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

相关推荐
猫头虎2 分钟前
如何解决 pip install -r requirements.txt extras 语法 ‘package[extra’ 缺少 ‘]’ 解析失败问题
开发语言·python·开源·beautifulsoup·virtualenv·pandas·pip
eqwaak015 分钟前
动态图表导出与视频生成:精通Matplotlib Animation与FFmpeg
开发语言·python·ffmpeg·音视频·matplotlib
AndrewHZ42 分钟前
【图像处理基石】GIS图像处理入门:4个核心算法与Python实现(附完整代码)
图像处理·python·算法·计算机视觉·gis·cv·地理信息系统
帮帮志1 小时前
目录【系列文章目录】-(关于帮帮志,关于作者)
java·开发语言·python·链表·交互
二王一个今3 小时前
Python打包成exe(windows)或者app(mac)
开发语言·python·macos
一勺菠萝丶3 小时前
Mac 上用 Homebrew 安装 JDK 8(适配 zsh 终端)完整教程
java·python·macos
C嘎嘎嵌入式开发7 小时前
(2)100天python从入门到拿捏
开发语言·python
Stanford_11068 小时前
如何利用Python进行数据分析与可视化的具体操作指南
开发语言·c++·python·微信小程序·微信公众平台·twitter·微信开放平台
white-persist9 小时前
Python实例方法与Python类的构造方法全解析
开发语言·前端·python·原型模式
Java 码农10 小时前
Centos7 maven 安装
java·python·centos·maven