2

私の目標は、ドキュメントからすべての画像を取得し、150x150px より大きいすべての画像をローカルにダウンロードすることです。

前の手順で取得した URL からファイルを取得することに行き詰まっています。バグのあるコード行は次のとおりです (完全なコード - 最後に):

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

コンソールから実行すると、エラーなしで fs.copy() でハングアップします。

私が理解できるように、 fs.copy() は、すべての適切な引数を設定しても (--load-images=yes、--local-to-remote-url-access=yes)、リモート URL では機能しません。私は正しいですか、それともcopy()で間違ったことをしましたか? 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();
  });
}
4

1 に答える 1

0

男はこれを試してみてください。

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();   
}
于 2012-02-27T10:15:49.120 に答える