HTML ab einer bestimmten Position 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
manukura
User
Beiträge: 4
Registriert: Donnerstag 23. Mai 2013, 18:19

Hallo,

ich über gerade:

Code: Alles auswählen

#!C:\Python33

import urllib.request
from bs4 import BeautifulSoup

soup = BeautifulSoup(urllib.request.urlopen("http://www.berlin.de/wetter/"))
# HTML-Schnipsel:  <li class="temperatur"><a>12 °C</a></li>
print (("Temperatur in Berlin:"),(soup('li', { 'class' : 'temperatur' },'a')[0].text))


#        <ul class="winning-numbers clearfix">
#         <li class="content">
#          6
#         </li>
#         <li class="content">
#          8
#         </li>
#         <li class="content">
#          23
#         </li>
#         <li class="content">
#          24
#         </li>
#         <li class="content">
#          35
#         </li>
#         <li class="content">
#          36
#         </li>
#         <li class="extra-number last-item">
#          8
#         </li>
#        </ul>

soup = BeautifulSoup(urllib.request.urlopen("http://www.lotto.de/de/ergebnisse/6aus49_results/archiv/results_6aus49.xhtml"))
print(soup.prettify())
Teil 1 habe ich ja verstanden,
nun möchte ich gerne Teil 2 realisieren, also ab Position
<ul class="winning-numbers clearfix">

die 6 Zahlen lesen + ab Position
<li class="extra-number last-item">
die nächste Zahl.

freue mich wenn jemand mich auf den richtigen Weg setzten könnte.

einen schönen abend noch, wünscht,
Gerd
--
Zuletzt geändert von Hyperion am Donnerstag 23. Mai 2013, 18:39, insgesamt 1-mal geändert.
Grund: Code in Python-Code-Blöcke gesetzt.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Hallo und Willkommen im Forum!

Du musst Python-Code immer in die dafür vorgesehenen Tags setzen; ansonsten geht die Einrückung verloren und die ist in Python Teil der Syntax.

Das Problem solltest Du noch einmal besser erklären. Wo genau hakt es denn bei Dir? An welcher Stelle hast Du Probleme?

Und woher stammen die "Aufgaben"? Sollten es Hausaufgaben sein, so lies bitte den angepinnten Thread hier im Subforum ;-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
manukura
User
Beiträge: 4
Registriert: Donnerstag 23. Mai 2013, 18:19

Hyperion hat geschrieben: Wo genau hakt es denn bei Dir? An welcher Stelle hast Du Probleme?
Und woher stammen die "Aufgaben"?
Hallo Hyperion,
Teil 1 war meine Übung, "einen" Wert aus einer HTML Seite auszulesen, hier die 12°C

Teil 2 war meine Übung "mehrere" Zahlen auszulesen, hier der Einfachheit halber Lottozahlen von lotto.de

So als ganz grobe Struktur habe ich im Kopf:
1. den Startpunkt finden: "<div class="lottonumbers">"
2. dann müsste eine Schleife beginnen
1 bis 7
finde erste ganze Zahl
Z1 = erste Lottozahl
bis
Z7 = Superzahl
Ende
print (Z1 Z2 Z3 Z4 Z5 Z6 Z7)

Die "Aufgaben" habe ich mir selbst gesucht um einen Einstieg in Python zu finden, meine Programmiererfahrungen liegen schon etwas länger zurück.
(BASIC, PL/1, PASCAL)

cu
Gerd
--
EmaNymton
User
Beiträge: 174
Registriert: Sonntag 30. Mai 2010, 14:07

Ich persönlich würde das mit lxml und xpath machen. Hier eine Möglichkeit (noch ausbaufähig):

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from lxml.html import parse

URL = 'http://www.lotto.de/de/ergebnisse/6aus49_results/archiv/results_6aus49.xhtml'

tree = parse(URL)

lottozahlen = tree.xpath("//ul[@class='winning-numbers clearfix']/li/text()")

print lottozahlen
liefert beim Aufruf:

Code: Alles auswählen

['6', '8', '23', '24', '35', '36', '8']
Antworten