lxml提取某个外层标签里的所有文本

html如下

html 复制代码
<div data-v-1cf6f280="" class="analysis-content">
    选项D错误:
    <strong>在衡量通货膨胀时,</strong>
    <strong>消费者物价指数使用得最多、最普遍</strong>
    。
</div>

解析html文本

python 复制代码
from lxml import etree
html1 = '''
<div data-v-1cf6f280="" class="analysis-content">
    选项D错误:
    <strong>在衡量通货膨胀时,</strong>
    <strong>消费者物价指数使用得最多、最普遍</strong>
    。
</div>
'''

html = etree.HTML(html1)

方法一:join

python 复制代码
s1 = html.xpath('//div/text()')

# 去掉空格和换行符
s11 = [x.strip() for x in s1]
print('div标签文本:',s1);print('div标签文本去掉空格和换行符:',s11)
s2 = html.xpath('//strong/text()')
print('strong标签文本',s2)
s3 = ''.join(s2)
s11[1] = s3
s = ''.join(s11)

print('拼接后:\n',s)

方法二:遍历父子节点

python 复制代码
def extract_text(element):
    text = []

    # 获取当前元素的文本(不包括子元素)
    if element.text:
        text.append(element.text.strip())

    # 遍历所有子元素,递归提取
    for child in element:
        text.extend(extract_text(child))  # 递归调用处理子元素

    # 获取当前元素尾部的文本(如果有)
    if element.tail:
        text.append(element.tail.strip())

    return text


# 获取<div>标签内的所有文本内容
text_list = extract_text(html)

# 拼接所有文本并输出
final_text = ''.join(text_list)
print("拼接后的文本:\n", final_text)
相关推荐
AsiaLYF1 分钟前
Kotlin MutableSharedFlow: emit vs tryEmit 详解
开发语言·前端·kotlin
喜欢踢足球的老罗1 分钟前
Chrome MV3 插件架构深度解析:Service Worker 生命周期与 Token 管理的三层博弈
前端·chrome·架构
Java面试题总结2 分钟前
Python 文件基本操作
大数据·人工智能·python
buxiangshui_cd2 分钟前
Conda命令
开发语言·python·conda
如竟没有火炬3 分钟前
恢复二叉搜索树
数据结构·数据库·python·leetcode·动态规划
小李云雾4 分钟前
Pinia:Vue3 全局状态管理从入门到精通
前端·javascript·vue.js
高洁014 分钟前
从GPT到开源大模型
python·机器学习·数据挖掘·transformer·知识图谱
吴梓穆6 分钟前
Python 基础语法2 if 运算符 循环
android·开发语言·python
如竟没有火炬7 分钟前
整数拆分——动态规划
开发语言·数据结构·python·算法·leetcode·动态规划
叫我:松哥8 分钟前
基于数据挖掘的旅游景点个性化推荐系统设计与实现,Apriori和FP-Growth算法挖掘景点之间的关联规则
人工智能·python·算法·数据挖掘·数据分析·beautifulsoup