You need to enable JavaScript to run this app. 使用Selenium如何获取类名为block-content的div下的a标签文本元素
优惠活动
大模型
产品
解决方案
定价
更多

使用Selenium如何获取类名为block-content的div下的a标签文本元素

目标文本稳定提取实现指南

核心定位说明

你要获取的目标文本是锚点<a>标签下、<i class="fa fa-map">元素后方的游离文本节点——这类文本没有被任何HTML标签包裹,夹在图标标签和锚点闭合标签之间,也是多数提取方案容易失效的核心原因:

  • 直接取<a>标签的全量文本,会混入<i>元素的节点空白、图标关联的占位内容
  • 直接用伪元素选择器定位,会把::before伪元素的渲染内容和目标文本混同
  • 用太泛的类选择器,容易匹配到同结构下的其他同类锚点

分场景可落地的稳定实现代码

浏览器端/前端脚本场景

用DOM原生API过滤子节点干扰,完全绕开伪元素、图标节点的影响:

// 精确定位目标锚点,限定层级避免匹配错节点
const targetLink = document.querySelector('.block-content > .block-heading > a');
// 仅提取锚点下、不属于任何子元素的直接文本节点
const wantedText = Array.from(targetLink.childNodes)
  .filter(node => node.nodeType === Node.TEXT_NODE) // 过滤掉<i>等元素节点
  .map(node => node.textContent.trim())
  .filter(Boolean) // 过滤掉节点间的换行、缩进等空白内容
  .join('');

稳定性说明:::before这类伪元素根本不会出现在DOM节点列表中,上述逻辑完全不会读到伪元素的渲染内容,只会抓取夹在<i>标签和锚点末尾的目标文本。

Python爬虫/静态解析场景

基于BeautifulSoup实现,适配服务端无浏览器渲染的抓取场景:

from bs4 import BeautifulSoup

# 传入抓取到的原始页面HTML字符串
soup = BeautifulSoup(page_html, "html.parser")
# 定位带地图图标的目标锚点
map_icon = soup.select_one(".block-content > .block-heading > a > i.fa-map")
# 取图标节点相邻的下一个纯文本节点,跳过图标自身的内容
wanted_text = map_icon.find_next_sibling(string=True).strip()

稳定性说明:这种写法不依赖文本在锚点中的位置索引,只要目标文本紧跟地图图标节点,就算页面后续在锚点内新增其他元素,只要图标位置不变,就能稳定取到目标值。


常见失效原因排查

  • 选择器写法不兼容:部分解析器不支持通过::text伪选择器直接提取节点文本,会直接返回空值
  • 未过滤空白节点:直接取innerText/textContent会把标签间的换行、缩进空格计入结果,导致后续业务匹配失败
  • 错误读取伪元素内容:如果调用了计算样式API读取::before的内容值,会把图标占位的文本和目标值混合,出现提取内容错位

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.24 07:06:04