Seite 1 von 1
Mit BeautifulSoup Text zwischen den > < auslesen.
Verfasst: Montag 26. Mai 2008, 14:49
von Treehouse
Hallo zusammen,
ich versuche gerade aus einer HTML Seite den Text der zwischen den > < geschrieben ist auszulesen. Nur leider komme ich nicht wirklich voran. Könnte mir jemand einen Tip geben wie man diesen Parsen könnte?
Also z.b :
<td><span class="bold">Diesen Text will ich haben</span>
Soweit ich das richtig verstanden habe ist BeautifulSoup dafür wie geschaffen nur leider verstehe ich nicht ganz wie ich damit umgehen soll.
Gruß
Treehouse
Verfasst: Montag 26. Mai 2008, 15:40
von BlackJack
Code: Alles auswählen
In [136]: soup
Out[136]: <td><span class="bold">Diesen Text will ich haben</span></td>
In [137]: soup(text=True)
Out[137]: [u'Diesen Text will ich haben']
Verfasst: Montag 26. Mai 2008, 19:23
von Treehouse
Hallo,
erst mal danke für deine Antwort. Aber leider verstehe ich jetzt nicht wirklich was du mir damit sagen willst.
Könntest du das mir vielleicht ein einem Stückchen Code zeigen?

Verfasst: Montag 26. Mai 2008, 19:48
von tiax
Hast du denn ein konkretes Verständnisproblem, bei dem man weiterhelfen könnte?
Verfasst: Montag 26. Mai 2008, 20:09
von Treehouse
Sagen wir es mal so hätte ich den CODE verstanden würde ich wohl nicht mehr nachfragen. Aber mach doch bitte noch ein paar Screenshots dann hast du was zu tun.
Verfasst: Montag 26. Mai 2008, 20:49
von Zap
guck dir die Doku einfach noch ein wenig an oder teste dich durch...
Code: Alles auswählen
In [15]: html = '<td><span class="bold">Diesen Text will ich haben</span></td>'
In [16]: soup = BeautifulSoup(html)
In [17]: soup(text=True)
Out[17]: [u'Diesen Text will ich haben']
In [18]: soup("td")
Out[18]: [<td><span class="bold">Diesen Text will ich haben</span></td>]
In [19]: soup("span")
Out[19]: [<span class="bold">Diesen Text will ich haben</span>]
In [20]:
Und hier mit urlopen und retrieve
Code: Alles auswählen
In [22]: from BeautifulSoup import BeautifulSoup
In [23]: from urllib import urlopen, urlretrieve
In [24]: url = "http://www.google.de"
In [25]: html = urlopen(url).read()
In [26]: soup = BeautifulSoup(html)
In [27]: soup("img")
Out[27]: [<img alt="Google" height="110" src="/intl/de_de/images/logo.gif" width="301" />]
In [28]: img = soup("img")[0]
In [29]: img.get("src")
Out[29]: u'/intl/de_de/images/logo.gif'
Verfasst: Mittwoch 28. Mai 2008, 16:22
von Treehouse
So erst mal danke für eure Antworten. Ich hatte leider sehr viel zu tun die letzten Tage so das ich jetzt erst dazu komme zu Antworten.
Zum Thema, ich habe das jetzt soweit verstanden aber mein Problem liegt darin das ich ja nicht alle Texte aus dem HTML Code haben will, sondern nur bestimmte. Ich suche so nach den relevanten Teilen.
Code: Alles auswählen
names = soup.findAll('span', {"class": "bold"})
for i, name in enumerate(names):
print i , name
So nun bekomme ich das was ich haben will. Nämlich alle Zeilen vom Aufbau wie oben beschrieben. Und aus diesen will ich jetzt nur den Text haben. Und damit habe ich Schwierigkeiten.
Gruß
Treehouse
Verfasst: Mittwoch 28. Mai 2008, 17:03
von birkenfeld
Ohne die BeautifulSoup-API näher zu kennen, würde ich darauf tippen, dass dein "name" wiederum ein Soup-Objekt ist und deshalb der Text mit
extrahiert werden kann.
Verfasst: Mittwoch 28. Mai 2008, 18:22
von Treehouse
birkenfeld hat geschrieben:Ohne die BeautifulSoup-API näher zu kennen, würde ich darauf tippen, dass dein "name" wiederum ein Soup-Objekt ist und deshalb der Text mit
extrahiert werden kann.
Hallo birkenfeld,
genau das habe ich auch gedacht aber leider ist dies nicht der Fall. Wenn ich das so mache bekomme ich eine Fehlermeldung.
Gruß
Treehouse
Verfasst: Mittwoch 28. Mai 2008, 19:50
von BlackJack
Wow eine Fehlermeldung. Es wäre hilfreich, wenn Du auch verraten würdest *welche*.
Verfasst: Mittwoch 28. Mai 2008, 20:22
von Treehouse
So hier ist sie:
Traceback (most recent call last):
File "soup.py", line 41, in <module>
if __name__ == '__main__': main()
File "soup.py", line 34, in main
names(text=True)
TypeError: 'ResultSet' object is not callable
Gruß
Treehouse
Verfasst: Mittwoch 28. Mai 2008, 20:26
von Treehouse
Stop Stop Stop.............................
Ich Esel habe das falsche Objekt angesprochen. Ich habe das mit "names" versucht und nicht mit "name" in der Schleife. Jetzt gehts !!!!!!!!
Ich danke allen die geholfen haben.
Gruß
Treehouse