Question

Mon objectif est d'obtenir toutes les images de Document, puis de télécharger toutes les images de plus de 150x150px à local.

Je suis coincé sur la récupération des fichiers à partir de l'URL que j'ai obtenue sur les étapes précédentes. Voici la ligne de code buggy (code complet - à la fin):

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

Lorsque je cours de Console, il raccroche sur fs.copy (), sans aucune erreur.

Comme je peux le comprendre, fs.copy () ne fonctionne pas avec les URL distantes, même si vous définissez tous les args appropriés (--load-iMages = oui, - local-à-recul-url-access = oui). Ai-je raison ou il y a quelque chose que j'ai fait de mal avec copy ()? Et existe-t-il des méthodes pour obtenir des fichiers directement à partir du cache de WebKit?

Vous avez la dernière version Phantomjs et le serveur Ubuntu.

Je serais apprécié pour tout type d'aide.

Code de script complet:

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();
  });
}
Était-ce utile?

La solution

Mec, essayez ceci.

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();   
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top