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

Selenium爬虫用Xpath获取Freightos网站FBX价格返回空列表求助

问题分析与解决方案

你的代码返回空元素列表,核心问题有三个:

  1. 未访问目标网页:代码里缺少driver.get()调用,Selenium操作的是空白页面,自然找不到任何元素
  2. 绝对XPATH不稳定:全路径XPATH依赖页面固定结构,只要页面有微小调整就会失效,且可读性极差
  3. 无加载等待逻辑:直接查找元素时,页面可能还没完成渲染,目标元素尚未生成

修正后的代码

from selenium import webdriver
from selenium.webdriver.edge.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 替换为你的Edge驱动实际路径
e_driver_path = "你的msedgedriver.exe路径"
s = Service(e_driver_path)
driver = webdriver.Edge(service=s)

# 1. 打开目标网站
driver.get("https://fbx.freightos.com/")

try:
    # 2. 显式等待10秒,直到价格元素加载完成
    # 用相对XPATH定位:通过"Current FBX"文本关联对应的价格元素
    price_element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located(
            (By.XPATH, "//div[text()='Current FBX']/following-sibling::div//span[@class='sc-12jmuzh-0 jHwMqM']")
        )
    )
    # 3. 输出目标价格
    print(price_element.text)
finally:
    # 确保浏览器进程被关闭
    driver.quit()

关键优化说明

  • 补充网页访问步骤:必须通过driver.get()主动打开目标站点,这是爬虫的基础操作
  • 使用显式等待:WebDriverWait会等待元素渲染完成后再执行操作,彻底解决页面加载延迟导致的元素丢失问题
  • 改用相对XPATH:通过文本Current FBX关联价格元素,比绝对路径更稳定,页面局部结构变化也不容易失效
  • 添加资源清理:finally块确保无论代码是否报错,浏览器都会被关闭,避免残留后台进程

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 06:20:53