2013-08-23 60 views
2

希望你能幫我做一個嵌套循環iMacros工作。iMacros中的嵌套循環(第二循環)

  1. 第一環:環source.csv的所有行(列A,多行)
  2. 二回路(X)://site.com/:抓住所有的hxxp發現List中的元素?什麼= {{COL1}!}

了很多工作,我覺得我終於找到感覺後:

腳本的問題是,我不能讓循環{{n}}抓住所有的positio ns的頁面(列表項目)。 任何幫助將不勝感激。

var macro; 
macro = "CODE:"; 
macro += "VERSION BUILD=000000" + "\n"; 
macro += "TAB T=1" + "\n"; 
macro += "SET !ERRORIGNORE YES" + "\n"; 
macro += "SET !EXTRACT_TEST_POPUP NO" + "\n"; 
macro += "SET !DATASOURCE source.csv" + "\n"; 
macro += "SET !DATASOURCE_COLUMNS 1 " + "\n"; 
macro += "SET !LOOP 1" + "\n"; 
//macro += "SET !TIMEOUT 3" + "\n"; 
macro += "SET !DATASOURCE_LINE {{i}}" + "\n"; 
macro += "URL GOTO=http://site.com/?what={{!COL1}} " + "\n"; 
macro += "TAG POS={{n}} TYPE=LI ATTR=CLASS:classofdiv" + "\n"; 
macro += "TAG POS={{n}} TYPE=SPAN ATTR=TXT:* EXTRACT=TXT" + "\n"; 
macro += "SAVEAS TYPE=EXTRACT FOLDER=* FILE=All_list_items.txt" + "\n"; 

for (var i=1;i<20;i++) 
{ 
iimSet("i",i) 
iimPlay(macro) 
iimSet("n",i)//<-- How to grab all the TAG POS of the website? 
} 

編輯1.1 - 我應該指出的是,我用這個詞{{n}}爲例循環列表項(DIV-UL-李跨度)。如果替換爲'POS = 1',腳本就可以工作,但是課程只保存第一個列表項目而不是所有列表項目。

回答

1

所以你想抓住POS = x的所有位置?

嘗試了這一點:

var macro; 
macro = "CODE:"; 
macro += "VERSION BUILD=000000" + "\n"; 
macro += "TAB T=1" + "\n"; 
macro += "SET !ERRORIGNORE YES" + "\n"; 
macro += "SET !EXTRACT_TEST_POPUP NO" + "\n"; 
macro += "SET !DATASOURCE source.csv" + "\n"; 
macro += "SET !DATASOURCE_COLUMNS 1 " + "\n"; 
macro += "SET !LOOP 1" + "\n"; 
//macro += "SET !TIMEOUT 3" + "\n"; 
macro += "SET !DATASOURCE_LINE {{i}}" + "\n"; 
macro += "URL GOTO=http://site.com/?what={{!COL1}} " + "\n"; 

var macro1; 
macro1 = "CODE:"; 
macro1 += "TAG POS={{n}} TYPE=LI ATTR=CLASS:classofdiv" + "\n"; 
macro1 += "TAG POS={{n}} TYPE=SPAN ATTR=TXT:* EXTRACT=TXT" + "\n"; 
macro1 += "SAVEAS TYPE=EXTRACT FOLDER=* FILE=All_list_items.txt" + "\n"; 

for (var i=1;i<20;i++) 
{ 
iimSet("i",i) 
iimPlay(macro) 


//set counter 
var n=1; 
//this is infinite loop 
while(true) 
{ 
iimSet("n",n)//<-- How to grab all the TAG POS of the website? 

var ret=iimPlay(macro1); 

//if macro didn't find any more positions it breaks from this loop 
//and reads new link from the csv file 
if(ret<0) 
{ 
break; 
} 

//increase counter 
n++; 
}//end of while loop 

}//end of for loop 

這將使宏1循環while循環中,只要有新的位置各一次。這可能無法正常工作,請給我們反饋。

+1

將宏2更改爲宏1。謝謝你,第二個循環的作品!所以有我的解決方案。 – Ruud

+0

太好了。我如何獲得+50賞金?將來詢問有關iMacros的任何問題,我會盡力回覆。 – macroscripts

+1

我想我已經給了它。你肯定應得的;) – Ruud