У меня есть ситуация: в CSV файле есть много URL-адреса - более 3000 в этом формате:
www.site1.com/product1
www.site1.com/product2
www.site1.com/product3
....
www.site1.com/product3001
со всей страницы я должен прочитать определенный тег - <div id="cat">category1</div>
Я пытаюсь решить эту проблему на стороне сервера, но для этого требуется много ресурсов сервера и вызывать ошибки Time Out. Тогда я задаюсь вопросом - есть ли способ, которым я могу это сделать с помощью какого-либо java-скрипта или jQuery? В этом случае браузер будет принимать трафик. Конечно - это займет некоторое время... но лучше, чем получить TimeOut с сервера.
Я думаю, что это возможно с некоторыми вызовами ajax, а затем ищет этот конкретный элемент (id = "cat"). Но я думаю, что сайты должны быть на одном сервере/домене, чтобы это работало.
Другой метод, который я хотел бы попробовать, - создать iframe и на петле загрузить страницу и дождаться метода onload iframe, после загрузки я буду искать этот конкретный элемент и получить его содержимое... Это несколько более вероятно работа, но это будет болезненно медленным...
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) наилучшим образом подходит, но по крайней мере у вас есть альтернативы, я бы держался подальше от запросов AJAX, чтобы сделать что-то подобное на массивных URL-адресах ([ CN10]) и придерживаться iframes, но все же верьте, что серверная сторона - GO GO. Приветствия.