<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />我试图(合法地)从网站导入体育数据(例如2012年伦敦残奥会的结果)。公共站点向IPC数据库提交查询,并返回带有多个表的HTML页面,具体取决于以下组合:竞赛(伦敦残奥会);运动(田径运动);性别(F);活动(100米); AWD级(F37);其中包括每个比赛阶段(热火/半决赛/总决赛)和热火号码的单独表格。每个事件大约有20个AWD课程,通常每页<20个表,具体取决于活动的受欢迎程度。要在JMP中部分自动执行此操作,我有一个大约360(= 20x 18)“Open”语句的脚本:
打开(
“ http://www.paralympic.org/ipc_results/results.php?competition=2004PG&gender=m&sport=athletics&discipline=&event=100%20m&eclass=T11 ”
HTML表格(3)
);
对于男性100米F11(盲)组(页面上的第三个表)。然后我通过对所有事件重复这个表来连接生成的表。我的问题是,虽然这个过程适用于允许每个类20个表的脚本(连接上述20个语句);当我尝试包含所有18个事件(360 = 20 x 18)时,执行在第一个事件(例如100米)之后无错误地停止,并且不为下一个事件(200米)产生输出。这是因为此事件/类组合中只有12个表(我不这么认为),还是其他一些问题?(我正在使用4核,64位PC和16Gb RAM,运行WinXP)。
我很感激那些有使用网络上“互联网开放”选择经验的人的建议。
我不确定它为什么会中断,但可能是因为当请求数量很大时网络连接速度越来越慢。或者请求因其他原因而失败。
您是一次连接所有表还是一次连接一个表(然后关闭源表)?后一种方法对您的计算机要求较低。
下面的代码似乎工作,即使事件列表扩展远远超出示例中的两个事件(我使用JMP 10 for Mac并具有相当快的网络连接)。我使用Try()来避免停止,以防每页少于20个表。
DT = 新表 ( “所有结果” ,新栏目 ( “源表” ,字符 ) ) ;
活动列表 = { “100” , “400” } ; //此示例中只有两个事件
对于 ( 一世 = 1 ,一世 <= N项 ( 活动列表 ) ,一世 ++,
尝试 ( //如果没有此事件的表,则转义循环
对于 ( Ĵ = 1 , Ĵ <= 20 , Ĵ ++,
//尝试(关闭(dt1,不保存)); //关闭上一个子表(如果有的话)
DT1 = 打开 (
“ http://www.paralympic.org/ipc_results/results.php?competition=2004PG&gender=m&sport=athletics&discipline=&event= “
|| 活动列表 [ 一世 ] || “%20米&的eclass = T11” ,
HTML表格 ( Ĵ )
) ;
等待 ( 0 ) ; //为JMP提供完成下载的机会,如果网络速度慢,则增加参数
DT1 << 设定名称 ( 活动列表 [ 一世 ] || “_表” || 烧焦 ( Ĵ ) ) ;
关口 = DT1 << 新栏目 ( “源表” ,字符 ) ;
对于每一行 ( DT1 : 关口 = ( DT1 << 得到名字 ) ) ;
DT << 串联 ( DT1 ,附加到第一个表格 ( 1 ) ) ;
关 ( DT1 ,没有保存 ) ; //关闭子表格
)
)
) ;