如何用Python Selenium提取网页元素鼠标悬停文本?
解决Selenium提取悬停提示文本的问题
针对你在https://idsc.cidadessustentaveis.org.br/rankings网站提取条形图悬停文本的需求,以下是可行的解决方案:
1. 优先检查元素的title属性
很多图表组件会把悬停提示直接存放在元素的title属性中,无需模拟悬停即可获取:
from selenium.webdriver.common.by import By # 替换为你定位条形图的选择器 bar_element = driver.find_element(By.CSS_SELECTOR, "此处填条形图元素的CSS选择器") tooltip_text = bar_element.get_attribute('title') print(tooltip_text)
2. 处理动态生成的Tooltip元素
如果悬停提示是动态加载的独立元素(比如悬停后才显示的div),需要先模拟悬停,再等待元素出现后提取文本:
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 # 定位目标条形图 bar_element = driver.find_element(By.CSS_SELECTOR, "此处填条形图元素的CSS选择器") # 模拟鼠标悬停 actions = ActionChains(driver) actions.move_to_element(bar_element).perform() # 等待Tooltip元素可见并获取文本 # 替换为实际的Tooltip选择器(可通过浏览器开发者工具查看) tooltip = WebDriverWait(driver, 10).until( EC.visibility_of_element_located((By.CSS_SELECTOR, ".tooltip-class")) ) print(tooltip.text)
3. 提取SVG图表中的<title>标签内容
如果目标是SVG绘制的条形图,悬停文本通常存放在SVG内部的<title>标签中,直接定位该标签即可:
# 替换为SVG条形图的选择器,再定位内部的title标签 title_element = driver.find_element(By.CSS_SELECTOR, "svg-bar-selector title") print(title_element.text)
关键说明
你之前用elem.text或悬停后仍拿不到文本,大概率是因为:
- 悬停文本不在目标元素的文本节点中,而是存储在属性、动态生成的独立元素或SVG的
<title>标签里 - 未等待动态Tooltip加载完成就尝试提取文本
内容的提问来源于stack exchange,提问作者amo
相关产品推荐
相关产品推荐

