检查元素是否在同一段落中(美丽的汤)

发布于 2024-12-02 16:01:10 字数 77 浏览 1 评论 0原文

如何检查 BeautifulSoup 解析树的元素是否在同一个

标记中?

How to check if elements of the BeautifulSoup parse tree are in the same <p> tag?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

_畞蕅 2024-12-09 16:01:10
  • 如果您知道两个节点都直接位于

    标记下,请检查节点的相等性 nodea.getParent() == nodeb.getParent();更一般地说,向上(递归)搜索,直到遇到

    标记。对每个节点分别执行此操作,然后比较结果是否相等:

    getContainingPara(nodea) == getContainingPara(nodeb)
    

    (让我们忽略嵌套

    标记的极端情况。)

  • 否则,迭代所有 <; p> 标签,使用文本搜索或正则表达式来搜索两者的匹配项:

    pat1 = re.compile(regex1)
    pat2 = 重新编译(正则表达式2)
    对于 soup.findAll('p') 中的 para:
        mat1 = pat1.搜索(段落)
        mat2 = pat2.搜索(段落)
        如果不是(mat1 或 mat2):继续
        # 找到了你的匹配对象
    
  • If you know both nodes are directly underneath a <p> tag, check equality of the nodes nodea.getParent() == nodeb.getParent(); more generally, search (recursively) upwards until you hit a <p> tag. Do this separately for each node, then compare the results for equality:

    getContainingPara(nodea) == getContainingPara(nodeb)
    

    (Let's ignore the corner-case of nested <p> tags.)

  • else, iterate through all <p> tags, using text search or regex(es) to search for matches on both:

    pat1 = re.compile(regex1)
    pat2 = re.compile(regex2)
    for para in soup.findAll('p'):
        mat1 = pat1.search(para)
        mat2 = pat2.search(para)
        if not (mat1 or mat2): continue
        # found your match
    
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文