<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Estoy intentando (legalmente) importar datos deportivos de un sitio web (por ejemplo, resultados de los Juegos Paralímpicos de 2012 en Londres). El sitio público envía consultas a la base de datos de IPC y devuelve una página en HTML con numerosas tablas, dependiendo de la combinación de: Competition (London Paralympics); Deporte (atletismo); Género (F); Evento (100m); Clase AWD (F37); que incluye una tabla separada para cada etapa de la competición (Calienta / Semifinales / Finales) y el número de calor. Hay alrededor de 20 clases AWD por evento, y generalmente <20 Tablas por página, dependiendo de la popularidad del evento. Para automatizar parcialmente esto en JMP, tengo un script de aproximadamente 360 (= 20x 18) declaraciones "abiertas" de la forma:
Abierto(
" http://www.paralympic.org/ipc_results/results.php?competition=2004PG&gender=m&sport=athletics&discipline=&event=100%20m&eclass=T11 ",
Tabla HTML (3)
);
para el grupo Masculino 100m F11 (ciego) (la tercera tabla en la página). Luego concateno las tablas producidas al repetir esto para todos los eventos. Mi problema es que, aunque este proceso funciona bien para un script que permite 20 tablas por clase (concatenando 20 de las declaraciones anteriores); cuando intento incluir los 18 eventos (360 = 20 x 18), la ejecución se detiene sin error después del primer evento (por ejemplo, 100 m) y no produce salida para el siguiente evento (200 m). ¿Esto se debe a que solo hay 12 tablas en esta combinación de evento / clase (no lo creo), o algún otro problema? (Estoy usando una PC de 4 núcleos y 64 bits con 16 Gb de RAM, ejecutando WinXP).
Agradecería el asesoramiento de cualquier persona que tenga experiencia en el uso de la opción "Internet Open" en la Web.
No estoy seguro de por qué se rompe, pero puede deberse a que la conexión a la red es cada vez más lenta cuando el número de solicitudes es grande. O que una solicitud falla por otro motivo.
¿Está concatenando todas las tablas a la vez o de una en una (y luego cierra la tabla de origen)? Este último enfoque exige menos de su computadora.
El código siguiente parece funcionar, incluso si la lista de eventos se expande mucho más allá de los dos eventos del ejemplo (uso JMP 10 para Mac y tengo una conexión de red bastante rápida). Utilicé Intentar () para evitar una parada en caso de que haya menos de 20 tablas por página.
dt = Nueva mesa ( "Todos los resultados" , Nueva Columna ( "Tabla fuente" , Personaje ) ) ;
lista de eventos = { "100" , "400" } ; // Solo dos eventos en este ejemplo
por ( yo = 1 , yo <= N artículos ( lista de eventos ) , yo ++,
Tratar ( // Escape loop si no hay más tablas para este evento
por ( j = 1 , j <= 20 , j ++,
// Probar (Cerrar (dt1, no guardar)); // Cerrar la subtabla anterior (si existe)
dt1 = Abierto (
" http://www.paralympic.org/ipc_results/results.php?competition=2004PG&gender=m&sport=athletics&discipline=&event= "
|| lista de eventos El yo ] || "% 20m & eclass = T11" ,
Tabla HTML ( j )
) ;
Espere ( 0 ) ; // Dale a JMP la oportunidad de completar la descarga, aumenta el argumento si la red es lenta
dt1 << escoger un nombre ( lista de eventos El yo ] || "_mesa" || Carbonizarse ( j ) ) ;
columna = dt1 << Nueva Columna ( "Tabla fuente" , personaje ) ;
Por cada fila ( dt1 : columna = ( dt1 << obtener nombre ) ) ;
dt << concatenar ( dt1 , Anexar a la primera tabla ( 1 ) ) ;
Cerrar ( dt1 , no guardar ) ; // Subtable subtable
)
)
) ;