Komisches Problem mit BeautifulSoup

21/09/2007 - 14:59 von Jan Weiher | Report spam
Hallo Leute,
irgendwie habe ich hier grade ein komisches Problem mit BeautifulSoup.
Und zwar versuche ich hier ein paar Seiten auszulesen. Das Problem ist
jetzt allerdings folgendes: Die Seiten sind identisch aufgebaut, nur
andere Informationen drinne (kann ich mit sicherheit sagen, sind nàmlich
auf meinem Mist gewachsen) und wenn ich jetzt meine selbst gebaute parse
Funktion da drüber laufen lasse und dabei explizit nur eine Seite
angebe, funktioniert auch alles herrlich. Da es aber mehrere Seiten
sind, habe ich mir jetzt eine kleine Funktion mit ner Schleife drin
gebaut, die halt quasi die Ergebnisse vom parsen zusammenfassen soll.

Nur wenn ich das jetzt laufen lasse, meckert Python rum "list index out
of range". Das Problem ist nur: dieser Aufruf geht wenn man jede der
Seiten einzeln aufruft. Nur in der Schleife gehts nicht? Da das ganze
ziemlich viel ist, zeig ich euch mal hier die entsprechenden Teile, in
der Hoffnung jemand kann diesen Knoten lösen:

Also hier ist der Anfang von der parse Funktion:

soup = BeautifulSoup(content)
termine = []
##count = 0
terminRohDaten = soup.findAll('table')[2].findAll('tr')[2:]
(Bei dieser Zeile meckert er dann rum)

So der Aufruf geht folgendermaßen vonstatten:

def KparseL(list):
termine = []
for file in list:
a = Kparse(file)
termine.extend(a)
return termine

Und in einer anderen funktion werden halt die entsprechenden Dateien
geöffnet und der Inhalt in eine Liste (Ein Eintrag pro Datei) geschmissen.

files = []
for x in range(1, pagenum):
filename = "krempel" + str(x) + ".htm"
myfile = open('cache/'+filename, 'r')
files.append(myfile.read().decode('iso-8859-1'))
return files

So und der Witz ist jetzt, wenn ich da statt
filename = "krempel" + str(x) + ".htm"
sowas hinsetze:
filename = "krempel" + str(1) + ".htm"

Also dass die Schleife auch làuft nur der halt X mal die gleiche Datei
nimmt, funktioniert es. Und das bei JEDER Datei


Ich bin grade ziemlich konfus

Oha ich hab ziemlich viel geschrieben, hoffe dennoch mir kann jemand
helfen. Danke dafür im Voraus.

grüße,
Jan
 

Lesen sie die antworten

#1 Stefan Behnel
21/09/2007 - 15:17 | Warnen spam
Jan Weiher schrieb:
terminRohDaten = soup.findAll('table')[2].findAll('tr')[2:]
(Bei dieser Zeile meckert er dann rum)



Der Rest unten ist wahrscheinlich egal. Aber du solltest dir deine Dateien
nochmal anschauen, ob auch wirklich überall das da oben gefunden wird. Gib mal
den Dateinamen aus und schau dir die Datei an, bei der er meckert.

Stefan

Ähnliche fragen