0

我希望我的代码打破循环,以防 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 代码会一次又一次地运行,而不是自行停止。

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

谢谢,

4

2 回答 2

2

您的代码将永远不会停止,因为 ret_code 将始终为 1,因为您正在抓取数据,即使未找到元素,它也会成功抓取并返回等于“#EANF#”的默认值,以使此代码按您的意愿工作您需要将其拆分为 2 个步骤 - 第一步将检查元素是否存在,第二步将刮擦 - 这是示例:

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++;
}
于 2013-04-22T21:16:21.833 回答
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)

除此之外,我认为这没有错误。尝试一下,如果它不起作用,我们将尝试其他方法。

于 2013-04-22T20:53:29.980 回答