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

求助:使用Python及Selenium提取指定网页Tooltip文本

提取OpenNEM网站Tooltip文本的解决方案

方法一:Selenium模拟鼠标悬浮获取

网站的Tooltip通常是鼠标悬浮后才显示的动态元素,直接定位触发元素无法获取内容,需要模拟悬浮操作:

  1. 初始化浏览器并加载目标页面,等待页面元素加载完成
  2. 定位到触发Tooltip的目标元素(比如图表上的数据点)
  3. 用动作链模拟鼠标悬浮在目标元素上
  4. 等待Tooltip元素可见后,提取其文本内容

示例代码:

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

# 初始化Chrome浏览器
driver = webdriver.Chrome()
driver.get("https://opennem.org.au/facility/au/NEM/CLOVER/?range=3d&interval=30m")

# 等待触发Tooltip的元素加载(需根据页面实际调整选择器,这里以图表数据点为例)
target_element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.CSS_SELECTOR, "circle.point"))
)

# 模拟鼠标悬浮
ActionChains(driver).move_to_element(target_element).perform()

# 等待Tooltip显示并获取文本
tooltip_element = WebDriverWait(driver, 5).until(
    EC.visibility_of_element_located((By.CSS_SELECTOR, "div.tooltip-inner"))
)
print(tooltip_element.text)

driver.quit()

方法二:直接提取前端JS数据

很多图表类网站的Tooltip数据会存储在前端JavaScript变量中,可以直接执行JS脚本获取:

  1. 打开浏览器开发者工具,在Console面板查看页面的全局变量(比如chart、series等)
  2. 找到存储Tooltip数据的变量,用Selenium执行JS脚本提取

示例代码:

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://opennem.org.au/facility/au/NEM/CLOVER/?range=3d&interval=30m")

# 等待页面JS加载完成
driver.implicitly_wait(10)

# 执行JS获取图表数据(需根据页面实际变量调整)
tooltip_data = driver.execute_script("return window.series[0].data;")

# 遍历提取所需的Tooltip文本
for item in tooltip_data:
    print(item['tooltip'])  # 具体字段需根据实际数据结构调整

driver.quit()

注意事项

  • 若选择器不生效,需打开页面开发者工具,手动定位触发元素和Tooltip元素的CSS选择器或XPath
  • 网站可能存在反爬机制,建议添加合理的等待时间,避免频繁操作
  • 使用无头浏览器时,需设置窗口大小,确保元素处于可见区域

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 05:55:16