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

your code will never stop because ret_code will always be 1, because you are scraping data, and even if element is not found it will success to scrape and return default value equal to "#EANF#", to make this code work as you want you need to split it to 2 steps - first step will check if element exist and second step will scrape - here is example:

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 に答える