Ich habe folgende Suppe:
<a href="some_url">next</a>
<span class="class">...</span>
Daraus möchte ich die href extrahieren, "some_url"
Ich kann es tun, wenn ich nur einen Tag habe, aber hier gibt es zwei Tags. Ich bekomme auch den text 'next'
aber das ist nicht was ich will.
Gibt es auch eine gute Beschreibung der API irgendwo mit Beispielen. Ich verwende die Standarddokumentation , suche aber etwas organisierteres.
Sie können find_all
Folgendermaßen verwenden, um jedes a
-Element mit einem href
-Attribut zu finden und jedes auszudrucken:
from BeautifulSoup import BeautifulSoup
html = '''<a href="some_url">next</a>
<span class="class"><a href="another_url">later</a></span>'''
soup = BeautifulSoup(html)
for a in soup.find_all('a', href=True):
print "Found the URL:", a['href']
Die Ausgabe wäre:
Found the URL: some_url
Found the URL: another_url
Beachten Sie, dass der Name dieser Methode findAll
lautet, wenn Sie eine ältere Version von BeautifulSoup (vor Version 4) verwenden. In Version 4 wurden die Methodennamen von BeautifulSoup geändert, um mit PEP 8 kompatibel zu sein , daher sollten Sie stattdessen find_all
Verwenden.
Wenn Sie alle Tags mit einem href
möchten, können Sie den Parameter name
weglassen:
href_tags = soup.find_all(href=True)