Element mit BeautifulSoup auslesen.

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
martinjo
User
Beiträge: 186
Registriert: Dienstag 14. Juni 2011, 20:03

Hallo,

ich komme mit BeautifulSoup nicht weiter, ich lese den passenden abschnitt wie folgt aus:

Code: Alles auswählen

if span["id"] == "xDescript":
      abschnitt = span
anschnitt enthält nun folgendes:

Code: Alles auswählen

<span id="xDescript"><br /><b>NNumber:</b><br />232356876<br /><br /><b>SUB Class:</b><br />2940<br /><br /><b>Item ID:</b><br />232356876<br /><br /><b>Description:</b><br />FEDERBALL</span>
Ich möcht ehier nur den Namen des Produkts, also FEDERBALL auslesen, bekomme das aber leider nicht hin. Kann mir da jemand auf die Sprünge helfen, Danke!
BlackJack

Das HTML ist an der Stelle ja doch ein wenig unschön strukturiert. :?

Code: Alles auswählen

In [29]: abschnitt.find('b', text='Description:').next_sibling.next_sibling
Out[29]: u'FEDERBALL'
Benutzeravatar
martinjo
User
Beiträge: 186
Registriert: Dienstag 14. Juni 2011, 20:03

Vielen Dank für die Antwort. Dank der Hilfe habe ich es nun hinbekommen. Jedoch musste ich einen anderen weg gehen. Das erste .next_sibling lieferte schon einen NoneType da die Info dich ich haben wollte ja nicht in einem Geschwister Tag von b liegt sondern irgendwo wo ich auch nicht genau definieren kann. Als letztes Element des span-Tags würde ich schätzen.

Meine Lösung die ich durch ausprobieren herausgefunden habe ist:

Code: Alles auswählen

    for na in abschnitt.findAll('b', text="Description:"):
        print na.findNext().next
Danke und einen schönen Tag
BlackJack

@martinjo: Ich hatte das mit dem <span>-Schnippsel den Du hier gezeigt hast ausprobiert, und damit ging es. Wenn Deine Daten anders aussehen als das was Du zeigst — hellsehen kann ich (im Moment¹) nicht. ;-)

¹ Glaskugel ist gerade in der Reinigung. 8)
Benutzeravatar
martinjo
User
Beiträge: 186
Registriert: Dienstag 14. Juni 2011, 20:03

Danke für die Rückmeldung, ich hatte vergessen "find" wir in deinem Beispiel durch "findAll" zu ersetzen. :oops:
Antworten