0

Je veux d'abord sélectionner <span> et ensuite <span>, puis obtenir leur innerText. J'ai essayé d'utiliser xpath ou document.querySelector, ils ne fonctionnent pas. I console.log mon tableau montre null.Comment sélectionner un élément spécifié avec CasperJS?

// I want to select first <span> 
function getDate() { 
    var date = document.querySelector('div.movie_intro_info_r li').selectedIndex = 1; 
    return Array.prototype.map.call(date, function (e) { 
     return e.innerHTML; 
    }); 
}; 
// I want to select second <span> 
function getMovieLength() { 
    var movieLength = document.querySelectorAll(x('//*[@class="movie_intro_info_r"]/span[2]')); 
    return Array.prototype.map.call(movieLength, function (e) { 
     return e.innerText; 
    }); 
}; 

casper.then(function() { 
    casper.each(movieHref, function (casper, url) { 
     casper.thenOpen(url, function() { 
      casper.waitForSelector('div.btn_gray_info.gabtn', function() { 
       console.log('wait for element'); 
      }); 
      releaseDate[urlCount] = this.evaluate(getDate); 
      console.log(releaseDate[urlCount]);// show null 

      movieLength[urlCount] = this.evaluate(getMovieLength); 
      console.log(movieLength[urlCount]);// show null 
      urlCount++; 
     }); 
    }); 
}); 

Comment puis-je sélectionner tout élément spécifié et obtenir son innerText?

Répondre

2

Votre code est un peu trop complexe pour ce que vous essayez de faire. Vous devriez envisager d'utiliser la méthode fetchText avec sélecteurs CSS:

var casper = require('casper').create(); 

casper.start('YOUR_URL', function() { 
    this.echo(this.fetchText('.movie_intro_info_r > span:first-of-type')); 
    this.echo(this.fetchText('.movie_intro_info_r > span:nth-of-type(2)')); 
}).run(); 
+0

Merci de votre réponse vraiment, j'essayer votre code google fetchText voir l'API et d'autres codes de stackoverflow. Je ne peux toujours pas imprimer quoi que ce soit, je mets à jour le code que j'essaie sur ma question. Pouvez-vous vérifier mon code et me suggérer quelle est la prochaine étape? Merci beaucoup ! –

+0

J'essaie de vérifier s'il existe ou non 'if (this.exists ('. Movie_intro_info_r> span: nième-de-type (2) ')) { console.log (' yes '); } else { console.log ('no'); } ' impression no. –

+0

Ce n'est pas un problème maintenant, la raison en est que j'ai mis le code au mauvais endroit de votre suggestion. Merci pour votre aide, bénédiction. –