lxml提取某个外层标签里的所有文本
html如下
<div data-v-1cf6f280="" class="analysis-content">
选项D错误:
<strong>在衡量通货膨胀时,</strong>
<strong>消费者物价指数使用得最多、最普遍</strong>
。
</div>
解析html文本
from lxml import etree
html1 = '''
<div data-v-1cf6f280="" class="analysis-content">
选项D错误:
<strong>在衡量通货膨胀时,</strong>
<strong>消费者物价指数使用得最多、最普遍</strong>
。
</div>
'''
html = etree.HTML(html1)
方法一:join
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)
方法二:遍历父子节点
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)