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
Mit BeautifulSoup Text zwischen den > < auslesen.
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']
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?
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?
[i]Jabber IM: Treehouse@jabjab.de[/i]
guck dir die Doku einfach noch ein wenig an oder teste dich durch...
Und hier mit urlopen und retrieve
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]:
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'
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.
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
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
Gruß
Treehouse
[i]Jabber IM: Treehouse@jabjab.de[/i]
- birkenfeld
- Python-Forum Veteran
- Beiträge: 1603
- Registriert: Montag 20. März 2006, 15:29
- Wohnort: Die aufstrebende Universitätsstadt bei München
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.
Code: Alles auswählen
name(text=True)
Hallo birkenfeld,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 mitextrahiert werden kann.Code: Alles auswählen
name(text=True)
genau das habe ich auch gedacht aber leider ist dies nicht der Fall. Wenn ich das so mache bekomme ich eine Fehlermeldung.
Gruß
Treehouse
[i]Jabber IM: Treehouse@jabjab.de[/i]
Wow eine Fehlermeldung. Es wäre hilfreich, wenn Du auch verraten würdest *welche*.
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
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
[i]Jabber IM: Treehouse@jabjab.de[/i]
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
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
[i]Jabber IM: Treehouse@jabjab.de[/i]