2017-02-03 3 views
2

Итак, я пытаюсь разобрать HTML-код, только возвращая теги абзацев и списков, что достаточно просто. Ниже приведен пример того, что я сделал до сих пор:Игнорирование дубликатов в Beautifulsoup Find_All

def main(): 
    soup = BeautifulSoup(html, 'html.parser').find_all() 
    print "output:" 
    for tag in soup: 
     if tag.name == 'p': 
      print tag.text # Text to be used to create a RichText object 
     elif tag.name == 'li': 
      print tag.text # Text to be used to create a RichText object 

HTML:

"<html><body><p><p>INSIDE TAG</p></p><ul><li>LIST1</li><li>LIST2</li></ul><p>OUTSIDE TAG</p></body></html> " 

Выход:

INSIDE TAG 
INSIDE TAG 
LIST1 
LIST2 
OUTSIDE TAG 

Как вы можете видеть, если тег содержит другой тег тот же тип, в этом примере абзаца, он повторяется, и мне было интересно, был ли лучший подход к этому, чтобы избежать этого? Основная проблема заключается в том, что это может быть любой тег, где это может произойти, поскольку я не контролирую входной HTML. Большое спасибо

ответ

1
for tag in soup: 
    if tag.name == 'p' and tag.parent.name !='p': 
     print tag.text # Text to be used to create a RichText object 
    elif tag.name == 'li': 
     print tag.text # Text to be used to create a RichText object 

Вы можете проверить родительское имя тега, чтобы фильтровать

+1

Спасибо так много! – ChuteDammit

Смежные вопросы