Python抓取Menards网站商品信息的稳定元素定位方案咨询
解决方案
可直接在定位到的search-item商品卡片基础上,进一步定位内部独立字段对应的专属元素,Menards全站搜索结果页的商品卡片结构统一,该方案可覆盖所有目标页面,无需做字符串清洗操作。
各字段对应的精准定位规则如下:
- 商品描述:对应类名
description,仅返回商品标题文本,无操作类冗余内容 - SKU:对应类名
sku,内容固定格式为Sku # + 编码,仅需截取后段即可 - 价格:对应类名
price,仅返回商品当前售价数值,不含满减、运费等额外信息
修改后的参考代码如下:
from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 等待页面商品元素加载完成,避免空返回 WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, ".search-item"))) items = driver.find_elements(By.CSS_SELECTOR, ".search-item") result = [] for item in items: # 规避偶尔出现的空卡片异常 try: desc = item.find_element(By.CSS_SELECTOR, ".details .description").text.strip() sku = item.find_element(By.CSS_SELECTOR, ".details .sku").text.strip().replace("Sku # ", "") price = item.find_element(By.CSS_SELECTOR, ".price-wrapper .price").text.strip() result.append({ "商品描述": desc, "SKU": sku, "价格": price }) except: continue # 输出测试 print(result[:3]) # 后续可直接将result列表写入Excel
如果需要处理多规格商品,可额外判断商品卡片是否存在variations类的元素,存在的话可以拼接规格提示文本或者进入详情页抓取全规格数据。
内容的提问来源于stack exchange,提问作者Jorge Jurado-Garcia
相关产品推荐
相关产品推荐

