222页抓取后幻像崩溃

时间:2015-06-10 12:04:21

标签: javascript node.js phantomjs

我在网站中有262个链接。我在NodeJS服务器中使用Phantom来抓取每个页面以创建HTML快照。我发现在第222页之后,幻像崩溃并出现以下错误:

phantom stderr: 2015-06-10 11:44:20.159 phantomjs[4474:58792] Critical failure: the LastResort font is unavailable.

这已经发生了两次,并且真的很痛苦,因为它需要很长时间来抓取这么多页面。为了记录,当我的页面数量减少时,我从来没有遇到过这个问题,前222页没有错误,所以我不认为问题出在我当前的代码上。但是,如果有人认为帮助我解决这个问题会有用,我会高兴地发帖。

我最初的假设是幻像中的错误,与允许抓取的最大页数有关,或者我可以/应该添加到我的虚拟实例中的设置。

我发现有同样问题的人在这里没有得到解决:https://groups.google.com/forum/#!topic/casperjs/KpDisQL7wxs

代码如下所示:

var crawlPage = function(arr, idx){


  // start/end crawl
  // --------------------------------

  if (!idx) idx = 0;
  if (idx >= arr.length) return;
  else if (idx === 0) console.log("Starting page crawl");


  // visit page
  // --------------------------------

  phantom.create(function(ph){
    ph.createPage(function(page){
      page.open(arr[idx], function(status){

        //error accessing page
        if (status !== "success") return console.log("Unable to access page");

        //wait 4s for page to render
        setTimeout(function(){

          //evaluate page html
          page.evaluate(function(){ 
            return document.all[0].outerHTML;
          }, function(snapshotHTML){

            //strip script tags from html
            snapshotHTML = snapshotHTML.replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi, "");

            //save snapshot to file
            saveSnapshot(arr[idx], snapshotHTML); //save snapshot file

            //crawl next page
            crawlPage(arr, idx+1);

            //exit page
            ph.exit();

          });

        }, 5000);

      });
    });
  });

}

var siteLinks = [/*array of 262 links*/];
crawlPage(siteLinks);

0 个答案:

没有答案