Hyperion hat geschrieben:Evtl. könnte man die Zuordnung der Daten noch ein wenig kompakter schreiben:
Code: Alles auswählen
In [1]: keys = ("Platz", "Mannschaft", "Spiele")
In [3]: col = [1, "b", 42]
In [4]: zip(keys, col)
Out[4]: [('Platz', 1), ('Mannschaft', 'b'), ('Spiele', 42)]
In [5]: dict(zip(keys, col))
Out[5]: {'Mannschaft': 'b', 'Platz': 1, 'Spiele': 42}
Da in Deiner col-Liste wohl aber Objekte stehen, bei denen Du auf ein "string"-Attribut zugreifst, müßte man mal gucken, ob das auch per str() Funktion klappt. Zur Not würde man das dann auch mit einer wrapper-Funktion lösen können - wobei sich dann die Frage stellt, ob das noch sinnvoll ist
Noch was zur Codierung: Nach PEP8
team statt Team und zeile statt Zeile.
Wobei man sich dann noch streiten kann, ob man nicht ganz auf Deutsche Bezeichner verzichtet

Das ist ne deutsche Webseite und ich verwende das Ding und ich kann deutsch

. Also werde ich dabei bleiben

.
Das mit der Zuordnung verstehe ist, allerdings ist noch das Problem, dass Mannschaft nicht in col[1] steht, sondern in team[0].
Außerdem hab ich nun mal noch die Strings mit reinen Zahlen in ints umgewandelt, da ich nicht weiß, ob ich das irgendwie noch brauchen kann. Außerdem ist das ganze nicht als was wichtiges produktives gedacht, sondern aus Spaß an der Freude zum Lernen.
Code: Alles auswählen
import mechanize
from BeautifulSoup import BeautifulSoup
br = mechanize.Browser()
br.addheaders = [('User-agent', 'Mozilla/5.0 '
'(X11; U; Linux i686; de; rv:1.9.1.2) '
'Gecko/20090729 Firefox/3.5.2')]
url = 'http://www.sis-handball.de/web/Default.aspx?view=Tabelle&Liga=001510504503503000000000000000000003000'
soup = BeautifulSoup(br.open(url).read())
tabeig = {
"cellpadding" : "0",
"cellspacing" : "0",
"style" : "font-family:Lucida Sans, Verdana, Arial;color: #272829; "
"font-size: 14px; text-align:center; margin-left: auto; "
"margin-right: auto; width: 95%; margin-top: 5px; "
"margin-bottom: 5px;"
}
tables = soup.findAll("table", tabeig)
table = tables[1]
for row in table.findAll('tr')[1:]:
col = row.findAll('td')
team = row.findAll('a')
try:
col[1]
except IndexError:
continue
zeile = {
'Platz' : int(col[1].string),
'Mannschaft' : team[0].string,
'Spiele' : col[3].string,
'Siege' : int(col[4].string),
'Unentschieden' : int(col[5].string),
'Niederlagen' : int(col[6].string),
'Tore' : col[7].string,
'Tordiff' : int(col[8].string),
'Punkte' : col[9].string
}
print zeile
Danke auf jeden Fall für eure Hilfen. Ich freue mich über alle Anregungen...