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

使用requests-html解析时排除span标签、保留b标签的问题咨询

解决方法

你可以直接操作requests-html底层封装的lxml节点实现需求,具体步骤如下:

  • 先定位到待删除的span.marker节点,将其从父节点中移除
  • 序列化div节点的所有子节点,即可得到去掉外层div、保留b标签的目标内容

代码示例

# 假设你已经获取到目标div的requests-html Element对象,即你问题中提到的element
# 定位span标签
marker_span = element.find('.marker', first=True)
# 从父节点中移除span节点
marker_span.element.getparent().remove(marker_span.element)

# 序列化div的子节点得到结果
from lxml import etree
result = ''.join([
    etree.tostring(child, encoding='unicode') 
    for child in element.element.iterchildren()
])

最终输出的result就是你需要的Te<b>x</b>t。

原理解释

requests-html自带的html、text、full_text属性都无法满足选择性保留标签的需求:

  • html返回包含外层div的完整标签内容
  • text和full_text只会提取纯文本,会丢弃所有HTML标签
    直接调用底层lxml的节点操作API可以灵活实现节点增删、标签保留的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 22:24:02