-1

したがって、最初のページを指定すると、マクロはこのサイトのすべてのページにアクセスする必要があります。(各ページの例として新しいタブを開きます)

これは私がネットで見つけたものですが、このマクロは 1 つの開始ページのリンクのみにアクセスし、2 番目のレベルには深くアクセスしません。

お手伝いありがとう!

//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++;
   }
}
4

1 に答える 1

0

このコードは基本的に、ページ上のすべてのリンクを見つけます。次に、href を抽出し、変数マクロに新しいマクロを構築します。その後、最後のコマンドで実行されretcode = iimPlay(macro)
ます。必要なのは、再帰関数です。これは、見つかった href の新しいタブを開くだけでなく、そのポイントが指すページで同じ関数を実行します。
したがって、上記のコードを、URL をパラメーターとして受け入れる関数にする必要があります。そして、imacros が見つけてリンクしたら、links href で関数を呼び出します。

于 2010-11-14T17:50:33.550 に答える