HTML Tag Selector标签选择器PFC020071801

本文介绍了一种实现HTML标签选择器的方法,通过分析路径语法、正则匹配、最小标签对称法,构建语法树并查找目标标签。在过程中避免了正则表达式的贪婪匹配问题,确保标签完整性。通过示例展示了如何对HTML内容进行解析,测试了不同路径规则的有效性。
摘要由CSDN通过智能技术生成

之前写过两篇关于HTML DOM解析的文章(附代码):

       PFC020071401

       PFC0200512

第一篇只能识别简单的HTML标签包含,第二篇仅可以分析出一组根叶子节点(Leaf Node),距离简单的标签选择器还有较大的差距。后来想了一两天,结合第二篇PFC020071401里的最小标签对称法,决定放弃完全依赖正则表达式的想法。最终考虑像进行语法分析那样,从HTML文本中,分离出一棵或多颗的语法树,从语法树中找出最终目标。

当前的想法是:

1)分析路径语法;

2)对HTML文本进行正则表达式匹配,找到目标标签;

3)使用最小标签对称法,循环匹配出所有的结果树;

4)判断当前标签是否为最终目标标签,是则利用第3)步结果进行步骤1),否则5);

5)列出结果。

最小标签对称法是利用HTML标签的开始标记和结束标记对称的原理,来完成标签完整性的目标的方法。对于某些个别标签开始和结束标记不完全对称的问题另当别论。HTML5基本要求标签对称。这样就可以忽略正则表达式贪婪匹配带来的“多重包含问题”--标签不完整、包含多个匹配结果。看以下代码最小对称法 minimalpair()

'''

author: MRN6

blog: qq_21264377@blog.csdn.net

updated: Jul. 18th, 2020 Sat. 03:40PM

'''

def minimalpair(tag, html, position):
    #最小对称法
    check_start_tag='<'+tag
    check_end_tag=''
    if tag=='meta':
        check_end_tag='>'
    else:
        check_end_tag='</'+tag+'>'    
    start_tag_length=len(check_start_tag)
    end_tag_length=len(check_end_tag)
    length=len(html)
    index=position
    start=html.find(check_start
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值