2012-02-27 5 views
2

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

私は前の手順で得たURLからファイルを取得することにこだわっています。私は、コンソールから実行すると

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

それだけで(fs.copyにハングアップ)、エラーなし: - ここではバグのコード行(末尾の完全なコード)があります。

すべての適切な引数を設定しても、fs.copy()はリモートURLでは機能しません(--load-images = yes、--local-to-remote-url-access =はい)。私は正しいですか、私は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(); 
    }); 
} 

答えて

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(); 
} 
+0

"for(; oPop.document.readyState!=" complete ";)"より新しいものです。 execCommandのアイデアをありがとう、私はそれから何か役に立つものを得ようとしています。 –

関連する問題