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

使用Selenium抓取Lyft价格估算Button标签的问题排查

解决Lyft价格数据抓取问题

第一个问题:初始代码无法获取价格标签的原因

Lyft的价格估算数据是通过前端JavaScript动态渲染生成的,你直接调用driver.page_source时,页面还没完成所有数据的加载和渲染,所以对应的价格标签还未出现在HTML结构里。

第二个问题:无法找到span元素的原因

你写的CSS选择器格式错误:"span.sc-7e9e68d9-0 lctkqn" 中两个class之间应该用.连接,正确写法是"span.sc-7e9e68d9-0.lctkqn"。但更关键的是,这类以sc-开头的class是前端框架动态生成的,每次页面部署都可能变化,用它定位元素非常不稳定,很容易失效。

修正方案

  1. 先处理Cookie同意弹窗(如果页面存在),避免它干扰元素加载
  2. 使用更稳定的定位方式,比如根据元素的文本特征、父容器的固定属性或XPath来定位价格元素
  3. 确保等待元素完全加载完成

下面是修正后的示例代码:

import requests
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

PATH = r'C:\Program Files (x86)\chromedriver.exe'  # 加r避免Windows路径转义字符问题
driver = webdriver.Chrome(PATH)

oLat = 33.7885662
oLong = -84.326684
dLat = 33.4486296
dLong = -84.4550443
# 用f-string拼接URL更简洁
url = f"https://ride.lyft.com/ridetype?origin={oLat}%2C{oLong}&destination={dLat}%2C{dLong}&ride_type=&offerProductId=standard"
driver.get(url)

try:
    # 处理Cookie同意弹窗(适配英文/中文按钮文本)
    cookie_btn = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.XPATH, "//button[contains(text(), 'Accept') or contains(text(), '同意')]"))
    )
    cookie_btn.click()

    # 等待价格元素加载,通过文本特征(包含$符号)定位
    price_element = WebDriverWait(driver, 20).until(
        EC.visibility_of_element_located((By.XPATH, "//span[contains(text(), '$')]"))
    )
    print("价格数据:", price_element.text)
finally:
    driver.quit()

额外提示

  • 用f-string拼接URL比传统字符串拼接更简洁,也能减少出错概率
  • Windows路径前加r可以避免转义字符引发的路径错误
  • 如果通过$符号定位不够准确,可以打开浏览器开发者工具,查看价格元素的父容器是否有固定ID或class,比如找包含"Estimate"文本的元素附近的价格标签,定位会更精准

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 23:10:56