如何使用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
相关产品推荐
相关产品推荐

