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

使用Python Selenium抓取商品价格报错'str'对象不可调用如何解决

问题原因与修复方案

核心报错原因

你抛出'str' object is not callable的直接原因是误用了By.XPATH的语法:By.XPATH本身是Selenium定义的字符串常量,不是可调用的函数,你把它写成By.XPATH("xxx")的形式,相当于尝试把字符串当成函数执行,就会触发该报错。
正确的find_element传参格式是传入两个独立参数:第一个是定位方式常量(比如By.XPATH),第二个是对应的定位表达式。

次要语法问题

你的XPath表达式里@data-product-id的属性值结尾多写了一个多余的单引号,会导致定位表达式解析失败。

修复后的代码片段

把原来的get_elements赋值行替换为以下内容即可解决报错:

get_elements = driver.find_element(By.XPATH, "//span[@data-product-id='2151359512645']")

可选优化建议

  • 你前面定义了Chrome启动参数(无头、无痕、忽略证书错误等),但初始化webdriver.Chrome的时候没有传入options参数,这些参数不会生效,建议修改初始化代码:
driver = webdriver.Chrome(service=s, options=options)
  • 页面加载可能存在延迟,建议增加显式等待逻辑,避免元素还没渲染就执行定位导致找不到元素的报错:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 最多等待10秒直到目标元素加载完成
get_elements = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.XPATH, "//span[@data-product-id='2151359512645']"))
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 01:36:03