-1

ページングスタイルでアイテムをリストするWebサイトで利用可能なリストアイテムをフェッチする必要があります。各ページの項目の情報を抽出します。を使用してJavascriptコードをsettimeout(function(){...code...}, 5000)記述し、FirefoxWebコンソールでこのコードを実行しました。スクリプトはページ内のすべてのアイテムをフェッチします。これが完了すると、スクリプトclick()はハイパーリンク「next」のメソッドを実行してページを送信します。これは、ページに「次へ」ハイパーリンクが含まれるまで続きます(最後のページでは、「戻る」ハイパーリンクが存在する場合のみ)。すべてのページ送信で、5秒にタイムアウトします。

Firefox Webコンソールでこのコードを実行しました。これは正常に実行され、最初のページの結果をフェッチしてから、ページを送信します。次のページも読み込まれます。ただし、問題は、ページが送信されるとスクリプトが停止することです。次のページが読み込まれた後でも、このスクリプトを継続的に実行するにはどうすればよいですか?この機能を実現する他の方法はありますか?

var inc=0;
var ids;
var main=function(){
console.log("attempiting..............."+inc);
var i=0;
{
    ids[inc]=b();//function, fetch the items from the page
    console.log(ids);
    var more=document.getElementById("m_more_item");
    if(more){
        //next link is there
        var cli=more.getElementsByTagName("a");
        console.log("navigating to next page "+cli[0]);
        inc++;
        setTimeout(main,5000); //I tried placing this after click, but didnt work!
        cli[0].click(); //submitting...
    } else {
        //last page reached, exiting...
        console.log("exit1-> total items fetched are: "+ids);
        return ids;
    }
}
};
main();
4

1 に答える 1

0

setTimeout呼び出しを使用すると、関数が再帰的になり、ループを続けることができます。

setTimeout(cli[0].click, 5000);

乾杯。

編集:コメントが長かったので、答えとして追加しています。

別のページでAJAX呼び出しを使用できます。最初に、start = 1のAJAXでページを呼び出します。このリクエストが成功すると、必要に応じてデータを解析して情報を収集し、次のリクエストのためにlastItemIndexを保持し、必要な情報を投稿することを忘れないでください。 start = lastItemIndex+1を使用した2番目のAJAX呼び出しの成功時に別のAJAX呼び出しを使用します。

これらの呼び出しは、あなたが望むことをするはずです。

AJAXを呼び出して応答を解析するのは簡単なので、これにはjQueryを使用することをお勧めします。

于 2012-11-01T09:25:15.420 に答える