CasperJS - Comment ouvrir tous les liens dans un tableau de liens
J'essaie de faire en sorte que CasperJS permettra d'ouvrir chaque lien dans un array
de liens. Je l'ai si bien qu'après que j'ai ouvert un lien, il affiche le titre de la page. Pourtant, quand je le lance, rien ne s'affiche.
Je peux utiliser un for loop
afficher les liens et il fonctionne parfaitement.
C'est le code pour ce que je viens de vous expliquer:
var x;
casper.start(URL, function() {
x = links.split(" "); //now x is an array of links
for (var i = 0; j < x.length; i++) //for every link...
{
casper.thenOpen(partialURL + x[i], function() { //open that link
console.log(this.getTitle() + '\n'); //display the title of page
});
}
this.exit();
});
casper.run();
C'est une autre méthode que j'ai essayé:
var x;
casper.start(URL, function() {
x = links.split(" "); //now x is an array of links
this.exit();
});
for (var i = 0; j < x.length; i++) //for every link...
{
casper.thenOpen(partialURL + x[i], function() { //open that link
console.log(this.getTitle() + '\n'); //display the title of page
});
}
casper.run();
Il est dit que " x " non défini. Remarquez que j'ai mis x soit une variable globale.
Toutes les modifications que vous pourriez faire serait génial. Merci.
Je viens de réaliser que le seul problème que j'ai eu a été de cette ligne:
Aussi,
for (var i = 0; j < x.length; i++)
<-- j'ai accidentellement écrit j
au lieu de i
dans le milieu de la condition.Aussi,
this.exit();
semble faire le script ne renvoie rien (je puisse l'emporter ou de passer à la casper.then(function() { this.exit(); } );
). Si je change de celles-ci, le code de la question des œuvres.
OriginalL'auteur Michael Yaworski | 2013-07-29
Vous devez vous connecter pour publier un commentaire.
OriginalL'auteur Michael Yaworski
a fonctionné pour moi.
OriginalL'auteur dvg
OriginalL'auteur abdel
Dans mon cas, j'ai dû gratter un site qui a un nombre inconnu de pages. Chaque page (sauf la dernière) avait un
<a class="next-page" href="/page/N">Next page</a>
lien (oùN
est le numéro de la page). Il n'y a aucun moyen pour le grattoir pour savoir quand il a été terminé, sauf lorsque la "Page Suivante" le lien n'était plus présent.Bien sûr, vous aurez à faire des ajustements en fonction du type de pagination des liens qui peuvent exister sur votre page.
Voici ce que j'ai fait. Ymmv.
Espère que cela aide quelqu'un. Si vous avez d'autres questions, je me ferai un plaisir d'essayer de les aider.
OriginalL'auteur user633183
Et de "undefined" erreur. Essayez de ne pas utiliser trop souvent. J'ai cette erreur avec CasperJS souvent, alors je préfère écrire casper au lieu de cela.
array
est un véritable tableau, alors il est préférable d'utiliserarray.forEach(function(item){casper.thenOpen(partial+item)})
.OriginalL'auteur VonAxt
Essayer quelque chose comme cela.
x
était pas défini, car la boucle est exécutée avantcasper.start
.Dans le code ci-dessus, le
eachThen()
bloc est imbriquée à l'intérieur d'uncasper.then
bloc dans le but de retarder son exécution.J'ai essayé de l'édition de votre réponse et je suppose qu'il ai refusé pour une raison ou une autre. Pourriez-vous s'il vous plaît ajouter
var i;
à côté devar x;
, et pourriez-vous aussi ajouter desi++;
ci-dessousconsole.log...
Je l'ai changé pour utiliser eachThen au lieu de répéter. Il devrait fonctionner maintenant
TypeError: 'undefined' is not a function <evaluating 'this.eachThen'>
Il fonctionne, mais quelques modifications doivent être apportées à votre réponse.
response.data
ne fonctionne pas pour moi. J'ai utiliséx[i]
et a ajouté 1 ài
à chaque fois.OriginalL'auteur hexid
J'ai résolu le même problème avec ce code:
OriginalL'auteur Alex Albalá