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

如何使用Selenium获取指定div元素中的文本内容

解决方案

你当前的代码核心问题是缺失定位方式参数,加上绝对XPath稳定性差,很容易定位失败,可按以下步骤修复:

  • Selenium 4及以上版本的find_element方法要求第一个参数指定定位类型,你使用的是XPath路径,需要先导入By类,指定By.XPATH作为第一个参数。
  • 绝对XPath依赖完整的页面层级,只要页面结构有一处变动就会失效,更推荐先通过F12调试工具查看目标div是否有唯一的ID、类名、自定义属性,基于这些写相对XPath,稳定性会高很多。

基础修复代码

# 先导入依赖的By类
from selenium.webdriver.common.by import By

# 补全定位参数的写法
target_div = driver.find_element(
    By.XPATH,
    "/html/body/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div"
)
# 提取元素文本直接调用text属性即可
print(target_div.text)

如果页面是异步加载,元素还没渲染完成就执行定位也会失败,可以加显式等待优化:

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

# 最长等待10秒,直到目标元素加载完成
wait = WebDriverWait(driver, 10)
target_div = wait.until(
    EC.presence_of_element_located((
        By.XPATH,
        "/html/body/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div"
    ))
)
print(target_div.text)

学习建议

  • 优先掌握Selenium的8种基础定位方式,日常使用优先选ID、类名、CSS选择器、相对XPath这几种稳定性更高的方案。
  • 可以直接在浏览器F12控制台用$x("你的XPath表达式")测试定位是否准确,不用每次运行Selenium代码调试,效率更高。
  • 搞清楚隐式等待、显式等待的区别,爬虫场景下优先用显式等待适配异步加载的页面。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 00:09:00