2017-02-03 56 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