2015-09-27 150 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