如果TAG与页面中的任何元素都不匹配,我希望我的代码能够打破循环,但这不起作用。
var result = "";
var counter = 1;
while(true)
{
var ret_code = iimPlay("CODE:TAG POS="+counter+" TYPE=A ATTR=HREF:http://www.xxx.com/index.php?topic=*.0 EXTRACT=HREF",60);
if(ret_code<0)
break;
s = iimGetLastExtract();
result += " "+s;
counter++;
}
如果没有找到任何匹配的元素,TAG代码会一次又一次地运行而不是停止运行。
是否可以使用返回代码执行此操作以及如何执行此操作?
谢谢,
答案 0 :(得分:2)
你的代码永远不会停止,因为ret_code总是为1,因为你正在抓取数据,即使找不到元素也会成功抓取并返回默认值等于“#EANF#”,使这段代码工作如你所愿,你需要将它分成两步 - 第一步将检查元素是否存在,第二步将刮 - 这是示例:
var result = "";
var counter = 1;
while(true)
{
iimSet("counter",counter);
var ret_code = iimPlay("CODE:TAG POS={{counter}} TYPE=A ATTR=HREF:http://www.xxx.com/index.php?topic=*.0");
if(ret_code<0){break;}
iimSet("counter",counter);
ret_code = iimPlay("CODE:TAG POS={{counter}} TYPE=A ATTR=HREF:http://www.xxx.com/index.php?topic=*.0 extract=href");
s = iimGetLastExtract();
result += " "+s;
counter++;
}
答案 1 :(得分:1)
var result = "";
var counter = 1;
while(true)
{
iimSet("counter",counter)
var ret_code = iimPlay("CODE:TAG POS={{counter}} TYPE=A ATTR=HREF:http://www.xxx.com/index.php?topic=*.0 EXTRACT=HREF",60);
if(ret_code<0)
break;
s = iimGetLastExtract();
result += " "+s;
counter++;
}
我见过几次
iimPlay("CODE:TAG POS="+counter+" TYPE=A ATTR=HREF:http://www.xxx.com/index.php?topic=*.0 EXTRACT=HREF",60)
但我从未使用过这种方法。所以我把它变成了这个。
iimSet("counter",counter)
var ret_code = iimPlay("CODE:TAG POS={{counter}} TYPE=A ATTR=HREF:http://www.xxx.com/index.php?topic=*.0 EXTRACT=HREF",60)
除此之外我没有看到任何错误。尝试一下,如果它不起作用,我们会尝试其他的东西。