Python Selenium获取动态span数值时语法错误求助
解决获取动态span数值时的SyntaxError问题
首先,你的代码触发SyntaxError是因为字符串嵌套冲突:CSS选择器里用了双引号,而包裹整个选择器的也是双引号,Python无法正确解析。
修正语法错误的两种方式:
- 方式一:将外层字符串改为单引号,内层保留双引号:
valorliquido = navegador.find_element_by_css_selector('span[class="woocommerce-summary__item-value"]')
- 方式二:转义内层的双引号(用
\"):
valorliquido = navegador.find_element_by_css_selector("span[class=\"woocommerce-summary__item-value\"]")
针对动态元素的额外优化
因为目标span的数值是持续变化的动态元素,直接获取可能遇到元素未加载或数值未更新的问题,建议使用显式等待确保元素可交互后再获取:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By # 等待元素可见(最长等待10秒) valorliquido_element = WebDriverWait(navegador, 10).until( EC.visibility_of_element_located((By.CSS_SELECTOR, 'span[class="woocommerce-summary__item-value"]')) ) # 获取数值并转为整数/浮点数 valorliquido = int(valorliquido_element.text) # 或 float() 按需转换
补充说明
如果页面中有多个class为woocommerce-summary__item-value的span,需要更精确的选择器(比如结合父元素的class或其他属性)来定位目标元素,避免获取到错误的数值。
内容的提问来源于stack exchange,提问作者Giovana Yamasato
相关产品推荐
相关产品推荐

