You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python网页爬取异常:无法将Home Depot数据写入列表或DataFrame

问题解决:Home Depot数据爬取无法写入列表/DataFrame

你的代码核心问题是重复查找元素,导致无法获取有效文本内容,进而列表为空。具体问题和修复方案如下:

问题分析

  • skus = driver.find_elements_by_class_name('product-identifier--bd1f5') 已经获取到所有SKU元素的列表,每个sku本身就是目标class的元素
  • 循环里又执行sku.find_element_by_class_name('product-identifier--bd1f5'),相当于在当前SKU元素内部查找同名子元素,而实际上不存在这样的子元素,所以获取的text为空,无法追加到列表
  • 价格部分的问题完全一致

修复后的代码

from selenium import webdriver
import pandas as pd

website = 'https://www.homedepot.com/b/Milwaukee/Special-Values/N-5yc1vZ7Zzv'
path = '/Users/Office/Documents/chromedriver.exe'
driver = webdriver.Chrome(path)
driver.get(website)
skus = driver.find_elements_by_class_name('product-identifier--bd1f5')
prices = driver.find_elements_by_class_name('price-format__main-price')

prod_num = []
prod_price = []

# 直接获取已找到元素的文本,无需再次查找子元素
for sku in skus:
    prod_num.append(sku.text)

for price in prices:
    prod_price.append(price.text)

driver.quit()
df = pd.DataFrame({'code': prod_num, 'price': prod_price})
df.to_csv('HD_test.csv', index=False)
print(df)

额外优化建议

  • 建议添加显式等待,避免页面未加载完成就执行元素查找(比如用WebDriverWait配合expected_conditions),防止因加载延迟导致获取不到元素
  • 检查SKU和价格的数量是否匹配,避免DataFrame因长度不一致报错

内容的提问来源于stack exchange,提问作者ryan houghton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 19:17:19