Selenium Python:定位商品价格元素及动态价格属性获取问题
正确获取动态商品价格的方法
问题分析
你提供的HTML里,商品价格直接存储在目标div的data-price属性中,不需要去查找兄弟节点。原代码存在两个核心问题:
- 错误尝试通过
following-sibling::td获取价格,实际价格就在你定位的div元素本身 get_attribute()方法缺少必填的属性名称参数
修正后的代码
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 driver = webdriver.Chrome() # 根据你的浏览器替换对应的驱动 driver.get("https://www.neopets.com/objects.phtml?type=shop&obj_type=37") try: # 用显式等待替代固定sleep,等待商品元素加载完成(适配动态页面) item = WebDriverWait(driver, 15).until( EC.presence_of_element_located((By.XPATH, "//div[@data-name='Blueberry Chia Pop']")) ) print("Item In Stock") # 直接读取元素的data-price属性,动态更新时属性值会同步变化 item_price = item.get_attribute("data-price") print(f"商品价格:{item_price}") except Exception as e: print("商品缺货或加载失败") print(e) finally: driver.quit()
关键说明
- 显式等待:相比
time.sleep(),显式等待会在元素出现后立即执行,既避免不必要的等待,又能适配页面动态加载的场景 - 直接读取属性:价格已绑定在元素的
data-price属性上,页面动态更新时该属性值会同步刷新,直接读取即可获取最新价格 - 异常处理:添加捕获异常的逻辑,可处理商品缺货、页面加载失败等情况
内容的提问来源于stack exchange,提问作者storyr4
相关产品推荐
相关产品推荐

