it-swarm.com.de

Schöne Suppe immer href

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.

166
dkgirl

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)
260
Mark Longair