Nur der erste link der eine URL-Liste mit BeautifulSoup
Ich analysiert eine gesamte HTML-Datei, extrahieren von URLs mit Beautifulsoup-Modul in Python, mit diesem Stückchen code:
for link in soup.find_all('a'):
for line in link :
if "condition" in line :
print link.get("href")
und ich bekomme in der shell eine Reihe von links, die zu beobachten, die Bedingung in der if-Schleife:
- http://..link1
- http://..link2
- .
- .
- http://..linkn
wie kann ich in einer variable "Ausgabe" wird nur der erste link in dieser Liste?
EDIT:
Die web-Seite ist : http://download.cyanogenmod.com/?device=p970 , das Skript für die Rückgabe des ersten kurz-URL (http://get.cm/...) in der HTML-Seite.
Den link loop, parse, ALLE <a href> </a> strings in die HTML-Seite, die Zeile loop flows wieder den Turnus der überprüfung der Bedingung in der wenn-Turnus, also es gibt nur die URLs, beachten Sie die Bedingung
InformationsquelleAutor Gabriele Salvatori | 2012-10-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie es mit einem oneliner:
Zuweisung an eine variable:
Ich habe keine Ahnung, was genau machst du so ich poste den vollen code von Grund auf:
NB! wenn Sie bs4 ändern Sie die Einfuhren
yep, nach dem Ende des Turnus mit
break
mitprint output
NÖ, es gibt mir eine Einrückung Fehler in der wenn-Turnus
ich habe Feste Einrückung, aber shell gibt nichts zurück
Hinzugefügt der vollständige code zurückgibt, die das Ergebnis, das Sie wollte.
InformationsquelleAutor root
Können Sie dies tun, mehr leicht und klar in BeautifulSoup ohne Schleifen.
Vorausgesetzt, Ihr analysiert BeautifulSoup-Objekt namens
soup
:Beachten Sie, dass die
find
Methode gibt nur das erste Ergebnis, währendfind_all
gibt alle von Ihnen.AttributeError: 'NoneType' object has no attribute 'attrs'
Das ist, weil Sie nicht implementieren die
lambda
richtig. Was ich schrieb, für Sie war ein Beispiel für die Verwendung der offensichtlich falsche"condition" in tag
. Sie sind immer dieAttributeError
weilsoup.find
ist nicht zu finden, alle Objekte, für die dielambda
zurückTrue
, und damit bist du dann der Versuch zu nennenattrs
aufNone
. Ich wäre in der Lage gewesen, um eine bessere Antwort hatte man sich gegeben, die website, die Sie zogen ursprünglich.InformationsquelleAutor jdotjdot