2016-06-16 21 views
0

Ich möchte verwenden soup.find_all, um alle HTML-Tags zu finden, die id oder name Attribute haben.Wählen Sie HTML-Tags mit einem oder mehreren spezifischen Attributen mit bs4

Der folgende Code funktioniert für das id-Attribut:

for tag in soup.find_all(attrs={"id": True}): 

jedoch der folgende Code mit zwei Attributen nicht:

for tag in soup.find_all(attrs={"id":True, "name":True}): 

Ist es möglich, eine Boolesche Suche mit BS4 zu tun, dass finde alle Tags, die eines von zwei spezifischen Attributen (oder beiden Attributen) haben, oder muss ich für jedes Attribut einzeln suchen?

Antwort

1
soup.find_all(lambda element: 'name' in element.attrs or 'id' in element.attrs) 

Wir verwenden lambda innen find_all das Element zuzugreifen. Und dann verwenden wir den Operator in, um zu prüfen, ob element.attrs (es ist ein Wörterbuch) Schlüssel nameoderid hat.

+0

Danke! Deine Lösung hat super funktioniert! –