0

ここに状況があります:CSVファイルには多くのURLがあります-その形式で3000以上:

www.site1.com/product1

www.site1.com/product2

www.site1.com/product3

....

www.site1.com/product3001

すべてのページから、特定のタグを読み取る必要があります -<div id="cat">category1</div>

サーバー側でこれを解決しようとしましたが、多くのサーバー リソースが必要になり、タイムアウト エラーが発生します。それから私は疑問に思います-ある種のJavaスクリプトまたはjQueryでそれを行う方法はありますか? その場合、ブラウザがトラフィックを取得します。もちろん、これには時間がかかりますが、サーバーから TimeOut を取得するよりはましです。

4

1 に答える 1

1

これは、いくつかの ajax 呼び出しで可能であり、その特定の要素 (id="cat") を探すことで可能だと思います。しかし、これが機能するには、サイトが同じサーバー/ドメイン上にある必要があると思います。

私が試みる別の方法は、iframe を作成し、ループでページをロードし、iframe の onload メソッドを待つことです。ロードされた後、その特定の要素を探してそのコンテンツを取得します...これは、動作しますが、痛々しいほど遅くなります...

var urls = [url1, url2, url3...]; //get all the urls from your file
var urlsLength = urls.length; //get the number of urls to loop for
var iFrame = document.createElement("iframe"); //create an iframe
var iframeContainer = document.getElementById("iframeContainer"); //iframeContainer must exists on your page, you can even hide it with display="none"
var iFrameBody; //variable to hold the iframe body
iframeContainer.appendChild( iFrame ); //add the iframe to its container
for( var i = 0; i<urlsLength; ++i ){ //loop for all the urls
    iFrame.src = urls[i]; //browse the designated url
    iFrame.onload = function(){ //when it loads, then do your work
        iFrameBody = iFrame.contentDocument || iFrame.contentWindow.document; //get the body of the iFrame
        doSomething( iFrameBody.getElementById("ELEMENT ID TO LOOK FOR") ); //send the element to your functions
    }
}

//this function will receive the element from inside the iframe, you can do whatever you need to 
function doSomething(element){
 var elementHTML = element.innerHTML;
 console.log( element );
}

-編集-

上記のコメントで述べたように、この方法は遅すぎます。このサーバー側を実行するのが (IMHO) 最良のアプローチですが、少なくとも代替手段があります。大量の URL でこのようなことを行う AJAX 要求には近づきません ( 30 + ) iframe に固執しますが、それでもサーバー側が GO GO であると信じています。乾杯。

于 2013-10-08T18:36:20.477 に答える