Как получить все изображения из документа и сохранить на локальном - PullRequest
2 голосов
/ 27 февраля 2012

Моя цель - получить все изображения из документа, а затем загрузить все изображения размером более 150x150 пикселей на локальный компьютер.

Я застрял при получении файлов с URL, который я получил на предыдущих шагах. Вот строка с ошибочным кодом (полный код - в конце):

...
var copyResult = fs.copy(imagesURLs[i], destFile);
...

Когда я запускаю из консоли, он просто зависает на fs.copy (), без каких-либо ошибок.

Как я понимаю, fs.copy () не работает с удаленными URL, даже если вы установили все правильные аргументы (--load-images = yes, --local-to-remote-url-access = yes ). Я прав или я что-то не так сделал с копией ()? И есть ли способы получить файлы напрямую из кеша webkit?

Получил последнюю версию Phantomjs и сервер Ubuntu.

Буду признателен за любую помощь.

Полный код скрипта:

if (phantom.args.length < 1 || phantom.args.length > 2)
{
  console.log('Usage: phantomjs ' + phantom.scriptName + ' <URL>');
  phantom.exit();
}
else
{
  var page = new WebPage(),
  address = phantom.args[0];

  page.viewportSize = { width: 1200, height: 4000 };
  page.open(address, function (status)
  {
    if (status === 'success')
    {
      var imagesURLs = page.evaluate(function ()
      {
        var documentImages = [], imagesCount = document.images.length, index = 0;

        while (index < imagesCount)
        {
          if ((document.images[index].width >= 150) && (document.images[index].height >= 150))
          {
            documentImages.push(document.images[index].src);
          }

          index++;
        }

        return documentImages;
      });

      var fs = require('fs');

      for (var i in imagesURLs)
      {
        var fileName = imagesURLs[i].replace(/^.*[\\\/]/, '');
        var destFile = '' + fs.workingDirectory + '/www/images/' + fileName;
        console.log(destFile);

        var copyResult = fs.copy(imagesURLs[i], destFile);
        console.log(copyResult);
      }
    }
    else
    {
      console.log('status: ' + status);
    }

    phantom.exit();
  });
}

1 Ответ

0 голосов
/ 27 февраля 2012

человек попробуй это.

function SaveAs(imgURL) 
{ 
  var oPop = window.open(imgURL,"","width=1,   height=1, top=5000, left=5000");   
  for(;oPop.document.readyState != "complete";   )   
  { 
    if (oPop.document.readyState == "complete")break; 
  } 
  oPop.document.execCommand("SaveAs"); 
  oPop.close();   
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...