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

Python Selenium如何获取鼠标悬停展示的元素信息

Selenium获取kalstall.de站点悬停触发的昵称描述方案

这个站点的昵称描述是hover事件触发的动态DOM渲染,没有做特殊反爬,用Selenium自带的动作链模拟真实鼠标悬停就能拿到,按下面步骤操作就行:

  • 先升级你的Selenium到4.0以上版本,不用手动下载浏览器驱动,内置的驱动管理器会自动匹配版本,执行安装命令:pip install selenium --upgrade
  • 核心逻辑分三步:定位目标昵称元素 → 模拟鼠标悬停在元素上 → 等动态加载的描述框出现后提取文本

可直接运行的参考代码

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://kalstall.de/")
# 配置最长10秒的显式等待
wait = WebDriverWait(driver, 10)
# 初始化动作链
actions = ActionChains(driver)

# 替换成你实际要抓取的昵称元素的定位规则
# 定位方式可以用CSS选择器、XPath,按你实际DOM结构来
nickname_ele = wait.until(EC.presence_of_element_located(
    (By.CSS_SELECTOR, "替换为昵称元素的CSS选择器")
))

# 执行鼠标悬停操作,完全模拟真人操作触发事件
actions.move_to_element(nickname_ele).perform()

# 等待悬停触发的描述弹窗加载为可见状态
# 提示:手动在页面悬停出描述框后按F8暂停JS执行,就能在开发者工具里找到这个描述框的DOM节点,直接复制选择器即可
desc_ele = wait.until(EC.visibility_of_element_located(
    (By.CSS_SELECTOR, "替换为悬停后显示的描述元素的CSS选择器")
))

# 提取描述文本
desc_content = desc_ele.text
print("获取到的描述内容:", desc_content)

# 操作完成关闭浏览器
driver.quit()

常见踩坑处理

  • 先检查昵称元素有没有原生title属性:如果有,不需要做悬停操作,直接用nickname_ele.get_attribute("title")就能拿到描述内容,效率更高
  • 批量抓取多个昵称的描述时,每次抓完单个内容要把鼠标移到页面空白处重置悬停状态,避免多个提示层叠导致内容抓取错误,加一行actions.move_to_element(driver.find_element(By.TAG_NAME, "body")).perform()即可
  • 不要用time.sleep()做固定等待,网络波动时很容易因为元素没加载完成抛错,用上面代码里的显式等待即可,元素加载完就会立刻执行下一步,稳定性和效率都更高
  • 如果悬停后提示框一闪而过不好定位,打开开发者工具后切到源代码面板,手动悬停出提示框的时候按F8就能暂停页面JS执行,动态生成的DOM节点会被固定住,直接复制选择器就行

内容的提问来源于stack exchange,提问作者Григорій

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 10:27:41