Imacro:如果TAG与页面上的任何元素不匹配,如何跳过?

时间:2013-04-20 10:33:59

标签: loops extract imacros

如果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代码会一次又一次地运行而不是停止运行。

是否可以使用返回代码执行此操作以及如何执行此操作?

谢谢,

2 个答案:

答案 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)

除此之外我没有看到任何错误。尝试一下,如果它不起作用,我们会尝试其他的东西。