Пожалуйста, дайте мне пример макроса IMacros для полного посещения всего сайта. - PullRequest
0 голосов
/ 10 ноября 2010

Поэтому я даю первую страницу и макросы должны посещать все страницы этого сайта. (откройте новую вкладку для примера каждой страницы)

Этот я нашел в сети, но эти макросы посещают только ссылки на одной стартовой странице, а не заходят на второй уровень в глубину.

Спасибо за помощь!

//imacros-js:showsteps no

//Testing forum post http://forum.iopus.com/viewtopic.php?f=11&t=7537&sid=2103c60e70f9c7051dcda5264874a488
//Idea is to read something in common on the page and open each link in a new tab.
var macro, retcode, url="", pos=1, stop=false;
while(!stop)
{
   macro="CODE:";
   macro+="TAB T=1\n";
   //macro+="TAG POS="+pos+" TYPE=A EXTRACT=HREF\n";
   macro+="TAG POS="+pos+" TYPE=A ATTR=HREF:* EXTRACT=HREF\n";
   //ATTR=CLASS:*topictitle* 
   retcode = iimPlay(macro);

   if (retcode < 0)               // an error has occured
   {
      errtext = iimGetLastError();
      alert("1st Error "+retcode+": "+errtext);
      stop=true;
   }

   //Stop if extract found nothing or counter is too high as a precaution
   if((url = iimGetLastExtract()) == "#EANF#" || pos > 10000)
   {
      stop=true;
      break;
   }
   else
   {
      macro="CODE:";
      macro+="SET !TIMEOUT 15\n";
      macro+="SET !ERRORIGNORE YES\n";
      macro+="TAB T=1\n";
      macro+="TAB NEW OPEN\n";
      macro+="TAB T="+new Number(pos+1)+"\n";
      macro+="URL GOTO="+url+"\n";
      macro+="TAB T=1\n";

      retcode = iimPlay(macro);

      if (retcode < 0)               // an error has occured
      {
         errtext = iimGetLastError();
         alert("2nd Error "+retcode+": "+errtext);
         stop=true;
      }
      pos++;
   }
}

1 Ответ

0 голосов
/ 14 ноября 2010

Этот код в основном находит все ссылки на странице. Затем он извлекает href и создает новый макрос в переменной macro. Затем он запускается с последней командой retcode = iimPlay(macro)
Вам нужна рекурсивная функция, которая не только открывает новую вкладку для href своих находок, но и запускает ту же функцию на странице, на которую она указывает.
Таким образом, вы должны превратить приведенный выше код в функцию, которая принимает URL в качестве параметра. И затем, когда imacros находит и связывает, вызывает функцию со ссылками href.

...