当前位置:网站首页 >  攻略

基于Python Selenium的电商批量上架自动化实操

时间:2026年06月02日 23:41:06 来源:易频IT社区

一、前置环境搭建

在开始编写自动化脚本之前,必须确保本地开发环境配置准确。本指南基于Windows 10/11系统,使用Python 3.9版本进行演示。

1. 安装Python环境

访问Python官网下载安装包:https://www.python.org/downloads/

下载完成后,运行安装程序。务必勾选“Add Python to PATH”选项,这是为了避免后续在命令行中无法直接识别python命令。安装完成后,打开CMD(命令提示符),输入以下命令验证安装是否成功:

```bash python --version ```

2. 安装依赖库

我们需要安装Selenium(用于浏览器自动化)、Pandas(用于处理Excel数据)以及WebDriver Manager(用于自动管理浏览器驱动)。在CMD中依次执行以下命令:

```bash pip install selenium pip install pandas pip install openpyxl pip install webdriver-manager ```

如果下载速度过慢,建议使用国内镜像源,例如在命令后添加 `-i https://pypi.tuna.tsinghua.edu.cn/simple`。

二、数据源准备

为了让脚本能够读取商品信息,我们需要准备一个结构化的Excel文件。在桌面上新建一个文件夹,命名为`ecommerce_auto`,在该文件夹内新建一个Excel文件,命名为`products_data.xlsx`。

打开Excel文件,在第一个Sheet(Sheet1)中设置以下表头,并填入至少3条测试数据:

  • A1列(表头):product_name(商品名称)
  • B1列(表头):price(售价)
  • C1列(表头):stock(库存)
  • D1列(表头):category(分类)

示例数据:

  • A2: 纯棉T恤男 夏季薄款, B2: 59.9, C2: 100, D2: 服装
  • A3: 运动跑鞋 透气防滑, B3: 129.0, C3: 50, D3: 鞋靴
  • A4: 不锈钢保温杯 500ml, B4: 35.5, C4: 200, D4: 餐厨

基于Python Selenium的电商批量上架自动化实操

保存并关闭Excel文件。

三、自动化脚本编写

在`ecommerce_auto`文件夹内,新建一个文本文件,将后缀名改为`.py`,命名为`batch_upload.py`。我们将使用Chrome浏览器进行操作,以下代码包含了完整的登录、读取Excel、填写表单及提交逻辑。

注意:由于不同电商后台的DOM结构不同,本代码以通用的元素定位逻辑为例。实际使用时,你需要根据自己后台的实际HTML标签修改`find_element`中的参数。

```python import time import pandas as pd 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 selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager 配置部分 LOGIN_URL = "https://your-shop-backend.com/login" 替换为你的后台登录地址 TARGET_URL = "https://your-shop-backend.com/product/add" 替换为商品添加页面地址 USERNAME = "your_username" 你的账号 PASSWORD = "your_password" 你的密码 def init_browser(): 自动下载并配置ChromeDriver options = webdriver.ChromeOptions() options.add_argument('--headless') 如需无头模式(不显示浏览器)可取消注释,调试阶段建议注释掉 options.add_argument('--disable-gpu') options.add_argument('--no-sandbox') driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options) driver.maximize_window() return driver def login(driver): print("正在打开登录页面...") driver.get(LOGIN_URL) 显式等待登录框加载完成 try: WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "username"))) 定位用户名和密码输入框(需根据实际网页ID修改) user_input = driver.find_element(By.ID, "username") pass_input = driver.find_element(By.ID, "password") login_btn = driver.find_element(By.ID, "login-btn") user_input.send_keys(USERNAME) pass_input.send_keys(PASSWORD) login_btn.click() print("登录信息已提交,等待跳转...") time.sleep(3) 简单等待跳转,实际可用EC.url_contains判断 except Exception as e: print(f"登录过程出错,请检查页面元素ID: {e}") def upload_product(driver, row): try: print(f"正在处理商品: {row['product_name']}") driver.get(TARGET_URL) 每次循环重新打开添加页面,确保状态干净 等待页面核心元素加载 WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.NAME, "name"))) 1. 填写商品名称 name_input = driver.find_element(By.NAME, "name") name_input.clear() name_input.send_keys(row['product_name']) 2. 填写价格 price_input = driver.find_element(By.NAME, "price") price_input.clear() price_input.send_keys(str(row['price'])) 3. 填写库存 stock_input = driver.find_element(By.NAME, "stock") stock_input.clear() stock_input.send_keys(str(row['stock'])) 4. 选择分类(假设是下拉选择框,此处演示点击操作) 如果是Select标签,需要使用Select类。这里演示通用点击。 category_dropdown = driver.find_element(By.ID, "category-id") category_dropdown.click() time.sleep(1) category_option = driver.find_element(By.XPATH, f"//li[text()='{row['category']}']") category_option.click() 5. 提交表单 submit_btn = driver.find_element(By.XPATH, "//button[contains(text(), '提交')]") submit_btn.click() 等待提交成功提示,例如“保存成功” WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.CLASS_NAME, "success-message"))) print(f"商品 {row['product_name']} 上架成功!") time.sleep(1) 缓冲时间 except Exception as e: print(f"商品 {row['product_name']} 处理失败: {e}") 此处可以添加截图功能以便调试 driver.save_screenshot(f"error_{row['product_name']}.png") def main(): 1. 初始化浏览器 driver = init_browser() try: 2. 执行登录 login(driver) 3. 读取Excel数据 df = pd.read_excel("products_data.xlsx") print(f"读取到 {len(df)} 条商品数据。") 4. 遍历数据并执行上架 for index, row in df.iterrows(): upload_product(driver, row) print("所有商品处理完毕。") finally: 5. 关闭浏览器 time.sleep(5) 停留5秒查看最终状态 driver.quit() if __name__ == "__main__": main() ```

四、关键元素定位实操方法

代码中使用的`By.ID`、`By.NAME`或`By.XPATH`需要根据你实际操作的电商后台页面进行修改。这是新手最容易卡壳的地方,请严格按照以下步骤获取正确的元素定位符。

  1. 打开浏览器开发者工具:在Chrome浏览器中打开你的电商后台,按下键盘上的 F12 键,或者右键点击页面选择“检查”。
  2. 使用选择器工具:在开发者工具顶部,点击一个小箭头图标(Ctrl+Shift+C),然后将鼠标移动到网页上的“用户名输入框”或“提交按钮”上。
  3. 获取定位信息:在Elements面板中高亮的HTML代码上右键点击 -> Copy -> Copy XPath(推荐)或 Copy selector
  4. 替换代码:将复制到的XPath字符串粘贴到Python脚本的对应位置。例如,如果复制的XPath是 `//[@id="username"]`,则代码写为:
    driver.find_element(By.XPATH, "//[@id='username']")

五、运行与排错

1. 启动脚本

打开CMD,切换到`ecommerce_auto`目录:

```bash cd C:\Users\你的用户名\Desktop\ecommerce_auto ```

运行脚本:

```bash python batch_upload.py ```

2. 常见错误处理

如果在运行过程中遇到 NoSuchElementException

  • 原因:页面加载速度慢于代码执行速度,或者定位符写错了。
  • 解决:增加`time.sleep()`的等待时间,或者检查XPath是否复制正确。确保没有iframe嵌套,如果有,必须先`driver.switch_to.frame('frame_id')`。

如果在运行过程中遇到 ElementClickInterceptedException

  • 原因:点击目标元素时,被其他弹窗或浮层遮挡。
  • 解决:在点击前执行一段JS代码强制点击,或者先关闭弹窗。
    driver.execute_script("arguments[0].click();", element)

六、进阶优化建议

完成上述步骤后,你已经拥有了一个可以自动批量上架商品的初级脚本。为了在生产环境中更稳定地运行,建议进行以下优化:

  1. 加入日志记录:将`print`替换为`logging`模块,将运行结果写入`log.txt`文件,方便后续追踪哪些商品上架成功,哪些失败。
  2. 异常自动截图:在`except`块中调用`driver.save_screenshot()`,当代码运行出错时自动保存当前页面截图,这是定位“为什么点不动按钮”最快的方法。
  3. 验证码处理:如果后台有验证码,简单的脚本无法识别。建议联系开发开通测试环境的白名单,或者使用`time.sleep(30)`暂停脚本,人工在浏览器中手动输入验证码后,脚本继续自动运行。
标签 电商增效

相关推荐

最新

热门

推荐

精选

标签

易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。

Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图