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

如何使用Python Selenium提取::before与::after伪元素之间的文本

Python Selenium提取伪元素::before/::after关联文本的方法

CSS的::before和::after属于伪元素,不会作为普通节点出现在DOM树中,Selenium默认的.text属性无法直接读取伪元素的content值,需要调用JS的getComputedStyle接口获取。

完整实现代码

from selenium import webdriver
from selenium.webdriver.common.by import By

# 初始化浏览器驱动
driver = webdriver.Chrome()
# 替换为你的目标页面地址
driver.get("https://example.com")

# 定位所有需要提取内容的目标元素(即伪元素绑定的父元素,选择器根据实际页面调整)
target_elems = driver.find_elements(By.CSS_SELECTOR, ".your-target-selector")

extracted_texts = []
for elem in target_elems:
    # 提取::before伪元素的content值
    before_text = driver.execute_script(
        'return getComputedStyle(arguments[0], "::before").content', elem
    ).strip('"\'')
    # 提取::after伪元素的content值
    after_text = driver.execute_script(
        'return getComputedStyle(arguments[0], "::after").content', elem
    ).strip('"\'')
    # 提取两个伪元素中间的原元素文本
    middle_text = elem.text.strip()
    
    # 按顺序拼接得到完整文本,可根据需求调整拼接逻辑
    full_text = f"{before_text}{middle_text}{after_text}"
    # 过滤无内容的空项
    if full_text:
        extracted_texts.append(full_text)

# 输出所有提取结果
for text in extracted_texts:
    print(text)

# 关闭驱动
driver.quit()

注意事项

  • 如果元素没有设置对应伪元素,接口返回的content值为none,拼接前可自行加判断过滤
  • 部分场景下伪元素content设置的是属性引用(比如attr(data-content)),该方法也能直接拿到渲染后的实际值
  • 元素选择器需要和伪元素绑定的父元素完全匹配,避免定位错误导致取不到值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 21:06:02