<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ich versuche, Sportdaten (legal) von einer Website zu importieren (z. B. Ergebnisse von den Paralympics 2012 in London). Die öffentliche Website übermittelt Abfragen an die IPC-Datenbank und gibt in HTML eine Seite mit zahlreichen Tabellen zurück, abhängig von der Kombination aus: Competition (London Paralympics); Sport (Leichtathletik); Geschlecht (F); Ereignis (100 m); AWD-Klasse (F37); Für jede Phase des Wettbewerbs (Vorläufe / Halbfinale / Finale) und die Startnummer gibt es eine separate Tabelle. Es gibt ungefähr 20 AWD-Klassen pro Ereignis und normalerweise <20 Tabellen pro Seite, abhängig von der Beliebtheit des Ereignisses. Um dies in JMP teilweise zu automatisieren, habe ich ein Skript von etwa 360 (= 20 x 18) "Open" -Anweisungen der Form:
Öffnen(
" http://www.paralympic.org/ipc_results/results.php?competition=2004PG&gender=m&sport=athletics&discipline=&event=100%20m&eclass=T11 ",
HTML-Tabelle (3)
);
für die Gruppe männlich 100m F11 (blind) (die dritte Tabelle auf der Seite). Ich verkette dann die Tabellen, indem ich sie für alle Ereignisse wiederhole. Mein Problem ist, dass dieser Prozess zwar für Skripts gut ist, die 20 Tabellen pro Klasse zulassen (20 der obigen Anweisungen verketten). Wenn ich versuche, alle 18 Ereignisse (360 = 20 x 18) einzuschließen, wird die Ausführung nach dem ersten Ereignis (z. B. 100m) ohne Fehler abgebrochen und es wird keine Ausgabe für das nächste Ereignis (200m) erzeugt. Liegt das daran, dass es nur 12 Tische in dieser Kombination aus Ereignissen / Klassen gibt (glaube ich nicht) oder andere Probleme? (Ich verwende einen 4-Kern-64-Bit-PC mit 16 GB RAM und WinXP).
Ich würde mich über Ratschläge von irgendjemandem freuen, der Erfahrung mit der Option "Internet Open" im Web hat.
Ich bin nicht sicher, warum es kaputt geht, aber es kann sein, dass die Netzwerkverbindung bei einer großen Anzahl von Anforderungen immer langsamer wird. Oder dass eine Anfrage aus einem anderen Grund fehlschlägt.
Verketten Sie alle Tabellen gleichzeitig oder einzeln (und schließen Sie dann die Quelltabelle)? Letzteres erfordert weniger von Ihrem Computer.
Der folgende Code scheint zu funktionieren, auch wenn die Ereignisliste weit über die beiden Ereignisse im Beispiel hinaus erweitert wird (ich verwende JMP 10 für Mac und habe eine ziemlich schnelle Netzwerkverbindung). Ich habe Try () verwendet, um einen Stopp zu vermeiden, falls weniger als 20 Tabellen pro Seite vorhanden sind.
dt = Neue Tabelle ( "Alle Ergebnisse" . Neue Spalte ( "Quelltabelle" . Charakter ) ) ;
Veranstaltungsliste = { "100" . "400" } ; // Nur zwei Ereignisse in diesem Beispiel
Zum ( ich = 1 . ich <= N Artikel ( Veranstaltungsliste ) . ich ++
Versuchen ( // Escape-Schleife, wenn für dieses Ereignis keine weitere Tabelle vorhanden ist
Zum ( j = 1 . j <= 20 . j ++
// Try (Close (dt1, kein Speichern)); // Vorherige Untertabelle schließen (falls vorhanden)
dt1 = Öffnen (
" http://www.paralympic.org/ipc_results/results.php?competition=2004PG&gender=m&sport=athletics&discipline=&event= "
|| Veranstaltungsliste [ ich ] || "% 20m & eclass = T11" .
HTML-Tabelle ( j )
) ;
Warten ( 0 ) ; // Geben Sie JMP die Möglichkeit, den Download abzuschließen. Erhöhen Sie das Argument, wenn das Netzwerk langsam ist
dt1 << Name einsetzen ( Veranstaltungsliste [ ich ] || "_Tabelle" || Verkohlen ( j ) ) ;
col = dt1 << Neue Spalte ( "Quelltabelle" . Charakter ) ;
Für jede Reihe ( dt1 : col = ( dt1 << Name bekommen ) ) ;
dt << verketten ( dt1 . An erste Tabelle anhängen ( 1 ) ) ;
Schließen ( dt1 . keine speichern ) ; // Untertabelle schließen
)
)
) ;