Seite 1 von 1

Element mit BeautifulSoup auslesen.

Verfasst: Freitag 6. Dezember 2013, 15:19
von martinjo
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!

Re: Element mit BeautifulSoup auslesen.

Verfasst: Freitag 6. Dezember 2013, 15:50
von 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'

Re: Element mit BeautifulSoup auslesen.

Verfasst: Freitag 6. Dezember 2013, 16:22
von martinjo
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

Re: Element mit BeautifulSoup auslesen.

Verfasst: Freitag 6. Dezember 2013, 16:33
von 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)

Re: Element mit BeautifulSoup auslesen.

Verfasst: Montag 9. Dezember 2013, 18:02
von martinjo
Danke für die Rückmeldung, ich hatte vergessen "find" wir in deinem Beispiel durch "findAll" zu ersetzen. :oops: