如何从Excel提取UPC条码列表并在动态网站批量搜索获取SKU
可行技术方案:基于Selenium + Pandas的批量UPC搜索与Excel交互
核心技术栈选择
用你熟悉的Selenium处理网页交互,搭配Pandas完成Excel读写——Pandas是Python生态中处理表格数据最便捷的工具,语法简单,能快速实现UPC列表读取和结果写入。
分步实现方案
1. 读取Excel中的UPC条码列表
假设源Excel文件名为upc_list.xlsx,UPC数据在列名为UPC的列中,用Pandas读取并转换为字符串列表(避免数字格式丢失前导零):
import pandas as pd # 读取源Excel文件 df = pd.read_excel("upc_list.xlsx") # 提取UPC列表并转为字符串类型 upc_list = df["UPC"].astype(str).tolist()
2. Selenium批量搜索并提取SKU
封装搜索函数,循环遍历每个UPC,加入异常处理避免单个UPC失败中断整个程序:
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys import time import random def get_sku_by_upc(upc, driver): try: driver.get("https://www.truevalue.com/") # 随机等待1-3秒,模拟真实用户操作 time.sleep(random.uniform(1, 3)) # 定位搜索框(需根据网页实际元素调整,示例用ID选择器) search_box = driver.find_element(By.ID, "search-input") search_box.clear() search_box.send_keys(upc) search_box.send_keys(Keys.ENTER) time.sleep(random.uniform(2, 4)) # 提取SKU(示例用类选择器,需根据搜索结果页面调整) sku_element = driver.find_element(By.CLASS_NAME, "product-sku") # 清理文本,保留纯SKU编号 sku = sku_element.text.split(":")[-1].strip() return sku except Exception as e: print(f"UPC {upc} 处理失败: {str(e)}") return "Not Found" # 初始化Chrome驱动 options = webdriver.ChromeOptions() # 可选:启用无头模式,不显示浏览器窗口 # options.add_argument("--headless=new") driver = webdriver.Chrome(options=options) driver.maximize_window() # 批量处理UPC results = [] for upc in upc_list: sku = get_sku_by_upc(upc, driver) results.append({"UPC": upc, "SKU": sku}) print(f"UPC {upc} → SKU: {sku}") driver.quit()
3. 将结果写入新Excel文件
用Pandas把结果列表转换成DataFrame,再写入目标文件:
# 转换为DataFrame格式 result_df = pd.DataFrame(results) # 写入Excel,不保留索引列 result_df.to_excel("upc_sku_mapping.xlsx", index=False) print("结果已成功保存到upc_sku_mapping.xlsx")
关键注意事项
- 元素选择器调整:代码中的搜索框、SKU元素选择器是示例,需打开目标网站,用浏览器开发者工具(F12)定位实际元素的ID、类名或XPath。
- 反爬优化:网站可能有反爬限制,除了随机等待,还可添加自定义User-Agent、禁用图片加载等配置。
- 数据校验:确保UPC为字符串类型,避免Excel自动转换带前导零的UPC为数字,导致搜索失败。
- 异常细化:可根据具体错误类型(如元素未找到、页面超时)添加针对性处理逻辑,比如重试机制。
内容的提问来源于stack exchange,提问作者user23604742
相关产品推荐
相关产品推荐

