7
votes

Comment télécharger des images d'un site avec Phantomjs

Je veux économiser des images d'un site. Pour le moment, je peux obtenir les chemins vers les images, mais je n'ai aucune idée de l'obtention et de sauvegarder les images avec des fantomjs.

findRotationTeaserImages = ->
  paths = page.evaluate ->
    jQuery('.rotate img').map(-> return this.src).get()

  for path, i in paths
    console.log(path);
    //save the image


3 commentaires

Oui, désolé pour mon mauvais anglais.


Votre -> une sorte de sténographie pour fonction () {...} ?


Oui, c'est la notation Coffeescript pour les fonctions.


5 Réponses :


5
votes

Résoudre ceci en démarrant un processus enfant exécutant un script de nœud qui télécharge les images:

script Phantomjs: strong> p>

http = require('http-get');

args = process.argv.splice(2)

for path, i in args
  http.get path, 'public/images/rotationTeaser/img' + i + '.jpeg', (error, result) ->


0 commentaires

18
votes

Je sais que c'est une ancienne question, mais vous faites cela assez simplement en stockant les dimensions et l'emplacement de chaque image sur l'objet dans un objet, puis modifiant la page Phantomjs.Clriprect afin que la méthode de page.Render () ne rend que la page. la zone où l'image est. Voici un exemple, grattant plusieurs images de http://dribbble.com/ : xxx


0 commentaires

9
votes

Il y a maintenant une autre façon de le faire. XXX


2 commentaires

Très bonne solution que j'ai essayé et ça marche bien. J'ai cependant quelques questions. Pourquoi .split est-il nécessaire (",") [1]? Je l'ai travaillé sans évaluer, est-ce que ça va? Merci !


Jamais essayé sans. Todaaurl retourne un préfixe définissant quel type de données il est avant le bypode réel. J'ai seulement vu ABOB utilisé avec le bytecode lui-même sans préfixe, il pourrait s'agir de ce que ATOB fonctionne également avec le préfixe, jamais essayé.



0
votes

Dans le cas où les dimensions de l'image sont connues: xxx


0 commentaires

0
votes

J'ai vécu beaucoup de problèmes lorsque vous utilisez la méthode rendu . Heureusement, je propose enfin deux meilleures solutions. Voici le code que j'ai utilisé dans mon projet. La première solution a des problèmes pour mettre à jour le cookie. Il ne peut donc pas bien fonctionner lors de la récupération de l'image CAPTCHA. Les deux méthodes provoqueront une nouvelle demande HTTP. Mais avec quelques modifications, la seconde peut étudier un tel type de demande.

Le premier accueille le cookie à partir de Phantomjs et crée une nouvelle demande HTTP à l'aide de Demande . La seconde utilise base64 pour transmettre l'image. xxx


0 commentaires