2015-09-27 64 views
0

我在写一个使用javascript的imacros脚本,我遇到了一个问题。imacros javascript返回顶部

var result = ""; 
var Loop = 1; 
while(true) 
{  

iimSet("Loop",Loop); 
var macro; 
    macro="CODE:"; 
    macro +="SET !DATASOURCE site.csv" + "\n"; 
    macro +="SET !DATASOURCE_LINE {{Loop}}" + "\n"; 
    macro +="URL GOTO=https://www.google.com/search?q={{!COL1}}" + "\n"; 
    macro +="WAIT SECONDS=1" + "\n";   
iimPlay(macro); 

var ret_code = iimPlay("CODE:TAG POS=1 TYPE=DIV ATTR=ID:resultStats"); 
    if(ret_code<0){break;} 
ret_code = iimPlay("CODE:TAG POS=1 TYPE=DIV ATTR=ID:resultStats EXTRACT=TXT"); 
    s = iimGetLastExtract();  
    result += " "+s;  
    Loop++ 
} 
var Ru; 
    Ru="CODE:"; 

iimPlay("#current.iim"); 

下面是过程。它遍历csv文件并检查在Google搜索结果中索引了多少页面。有时谷歌会要求输入验证码。如果验证码出现,它会从'var macro'中断,然后进入用于验证码部分的'var ru'。进入验证码后,我需要返回'var宏'并从其离开的地方继续。而且我还需要设置一个循环到数据源来停止一切。似乎无法弄清楚这一点。寻找你的帮助。

谢谢, 马克。

+0

我劝使这个问题更加清晰。 (1)明确指出验证码部分的位置和'#current.iim'代表什么。 (2)“停止一切”是否意味着你想在csv文件结束时打破循环? – Shugar

+0

(1)#current.iim是使用deathbycaptcha的验证码制动部分。 (2)是的。究竟。 – Mark

回答

0

所以,你可以尝试这样的事:

的第一个问题:

// ... 
var ret_code = iimPlay("CODE:TAG POS=1 TYPE=DIV ATTR=ID:resultStats"); 
if (ret_code < 0) 
    iimPlay("#current.iim"); 
iimPlay("CODE:TAG POS=1 TYPE=DIV ATTR=ID:resultStats"); 
ret_code = iimPlay("CODE:TAG POS=1 TYPE=DIV ATTR=ID:resultStats EXTRACT=TXT"); 
// ... 

为第2期:

// ... 
    macro +="WAIT SECONDS=1" + "\n";   
var ret_code = iimPlay(macro); 
if (ret_code < 0) 
    break; 
// ... 
+0

感谢队友。有一段时间玩了代码后,我能够使它工作。谢谢你。 :) – Mark