2014-01-12 29 views
6

PhantomJS是一个无头WebKit浏览器。我可以打开一个网址,并获取每秒更新一次的网页内容。与真正的浏览器幻像一样打开标签

但我需要同时获得许多(100)页面的内容。

所有页面必须同时打开并每秒刷新一次。

这是可能的一个页面,但我不知道如何从多个页面一次检索。

这是example code from the PhantomJS website:一次

console.log('Loading a web page'); 
var page = require('webpage').create(); 
var url = 'http://www.phantomjs.org/'; 
page.open(url, function (status) { 
    //Page is loaded! 
    phantom.exit(); 
}); 

我可以用很多PhantomJS实例?我似乎并不是最好的方式。任何机构是否知道如何打开一个PhantomJS实例并从多个页面获取内容?

+0

您可以创建更多的'page'实例?也许是一个数组? – Unsigned

+0

即时通讯不知道... beacuse页面必须打开很长一段时间...也是一个开始在JavaScript ..可以解释我吗? – MOB

+0

@未签名可以告诉我一些例子吗? – MOB

回答

4

下面是代码,我以前用来解析为E-店的物品,并把HTML代码对这些项目

我希望它会帮助你的每一页!对于你的问题------ CODE OF

var RenderUrlsToFile, system, url_string_for_array; 
var arrayOfUrls = new Array(); 

system = require("system"); 

RenderUrlsToFile = function(urls, callbackPerUrl, callbackFinal) { 
var getFilename, next, page, retrieve, urlIndex, webpage, link_name, sex; 

var fs = {}; 
fs = require('fs'); 

urlIndex = 0; 
webpage = require("webpage"); 
page = null; 
// getFilename = function() { 
//  return "parsed/" + urlIndex + ".png"; 
// }; 
next = function(status, url, file) { 
    page.close(); 
    callbackPerUrl(status, url, file); 
    return retrieve(); 
}; 
retrieve = function() { 
    var url; 
    if (urls.length > 0) { 
     url = urls.shift(); 
     urlIndex++; 
     page = webpage.create(); 
     page.viewportSize = { 
      width: 800, 
      height: 600 
     }; 
     page.settings.userAgent = "Phantom.js bot"; 
     return page.open("http://" + url, function(status) { 
      var file; 
      // file = getFilename(); 
      if (status === "success") { 
       return window.setTimeout((function() { 
        // page.render(file); 

        var js = page.evaluate(function() { 
          return document; 
         }); 

        fs.write('your_file_path'.html', js.all[0].outerHTML, 'w'); 

        return next(status, url, file); 
       }), 100); 
      } else { 
       return next(status, url, file); 
      } 
     }); 

    } else { 
     return callbackFinal(); 
    } 
}; 
return retrieve(); 
}; 

if (system.args.length > 1) { 
arrayOfUrls = Array.prototype.slice.call(system.args, 1); 
} else { 

------------主要部分

例如:我需要解析的电子商店的物品,所以我拿的第一页,然后我设置“的”为页面完全相同numbe

url_string_for_array = "www.lamoda.ru/c/559/accs-muzhskieaksessuary/?genders=men&page=1"; 

for(var k=2; k<20; k++) 
    { 
     url_string_for_array += ",www.lamoda.ru/c/559/accs-muzhskieaksessuary/?genders=men&page="+k; 
    } 

arrayOfUrls = url_string_for_array.split(','); 
} 

RenderUrlsToFile(arrayOfUrls, (function(status, url, file) { 
if (status !== "success") { 
    return console.log("Unable to render '" + url + "'"); 
} else { 
    return console.log("Rendered '" + url + "'"); 
} 
}), function() { 
return phantom.exit(); 
}); 
相关问题