Проверьте, есть ли элемент в том же абзаце (Красивый суп) - PullRequest
0 голосов
/ 02 сентября 2011

Как проверить, находятся ли элементы дерева разбора BeautifulSoup в одном теге <p>?

1 Ответ

1 голос
/ 03 сентября 2011
  • Если вы знаете, что оба узла находятся непосредственно под тегом <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
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...