算法:获取html中内容的开始和结束位置

这段代码演示了如何从HTML字符串中解析元素并提取标签。它使用栈数据结构逐个处理字符,当遇到尖括号时,判断是否为开始或结束标签,并将结果存储在结果列表中。最终输出了提取到的标签的起止位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#-*- coding: utf-8 -*-

html  = """<div><div>div data >aaa<p>ppp data<a>hello,world.</a></p></div></div>"""

if __name__ == "__main__":
    stack = []
    result = []
    for index,elem in enumerate(html):
        stack.append(elem)
        if elem == ">" and "<" in stack:
            tmp_result=[]
            tmp_data = []
            while stack:
                e = stack.pop()
                tmp_data.insert(0,e)
                if e=="<":
                    tmp_result.insert(0,tmp_data)
                    tmp_data = []
            
            if tmp_data:
                tmp_result.insert(0,tmp_data)
            if tmp_result:
                result.extend(tmp_result)

    result_index = []
    current_index = 0
    for index,record in enumerate(result):
        length = len(record)
        if not (record[0] == "<" and record[-1] == ">"):
            result_index.append([index,current_index,current_index + length])
        
        current_index = current_index + length
    
    
    for index,start,end in result_index:
        print(index,start,end)
        print(html[start:end])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值