检查元素是否在同一段(美味汤)

时间:2011-09-02 11:50:38

标签: python beautifulsoup text-processing

如何检查BeautifulSoup解析树的元素是否在同一个<p>标记中?

1 个答案:

答案 0 :(得分:1)

  • 如果您知道两个节点都在<p>标记的正下方,请检查节点nodea.getParent() == nodeb.getParent()的相等性。更常见的是,向上搜索(递归)直到您点击<p>标记。为每个节点单独执行此操作,然后比较结果是否相等:

    getContainingPara(nodea) == getContainingPara(nodeb)
    

    (让我们忽略嵌套<p>标签的角落。)

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

    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