如何检查BeautifulSoup解析树的元素是否在同一个<p>
标记中?
答案 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