2012-05-27 16 views
6

Also versuche ich einen Weg zu finden, alle Objekte innerhalb eines BeautifulSoup-Objekts zu finden, die ein bestimmtes Tag haben, die sich nicht in einem bestimmten anderen Tag befinden. Zum Beispiel:BeautifulSoup - findAll nicht innerhalb bestimmter Tags

<td class="disabled first"> <div class="dayContainer"> 
     <p class="day"> 29 
     </p> <p class="moreLink"> 
     </p> 
    </div> 
</td> 

Ich möchte alle Wiederholungen von class="dayContainer" zu finden, die einfach genug ist, aber wie gehe ich über all jene zu finden, die innerhalb class="diabled" nicht zuerst sind?

Antwort

7

Führen Sie einen Filter für Tags aus, deren Parent dieses Klassenattribut nicht besitzt. Etwas wie

filteredDayContainers = [tag for tag in soup.find_all('div', 
    attrs = {'class': 'dayContainer'}) 
    if "disabled" not in tag.parent['class']] 
+0

Danke! Es kommt jedoch immer wieder mit 'NoneType-Objekt ist nicht aufrufbar' zurück. Irgendeine Idee warum das sein könnte? – westbyb

+0

Versuchen Sie, das Problem zu isolieren - welches Objekt wird "None"? Ist es Suppe? tag.parent? Ich gehe davon aus, dass Sie BeautifulSoup auf Ihrer HTML-Zeichenfolge ausführen und das Ergebnis als "Suppe" speichern ... – Ansari

+0

Scratchen Sie das. Verwendet find_all anstelle von findAll. Wie dumm von mir. Problem gelöst, Ihr Vorschlag hat es geschafft! – westbyb

Verwandte Themen