2017-05-12 1 views
0

J'essayais de gratter un html (qui utilise uniquement la table sans ID comme structure> et tryig pour obtenir chaque valeur mais échoué, je dois utiliser la fonction findAll mais la couture d'obtenir un nul.Meilleurs moyens de gratter la table sur casperjs en utilisant casper.evaluate()

ci-dessous sont les données de la table que je reçois en 2ème couche.

<tbody><tr bgcolor="#FFCC66" valign="top"> 
<td><b>No</b></td> 
<td><b><a href="search.php?></a></font></b></td> 
<td><b><a href="search.php?>Prize</a></font></b></td> 
<td>..... 
<tr/> 
<tbody/> 

Ci-dessous est le code que je cherchais à appliquer dans casper.evaluate() mais il était de retour null mais pas les i données

var verbs = casper.evaluate(function() { 
        //First layer to peal off all table and added in map to get which table i wanna to. 
        var map = [].map.call(__utils__.findAll('table table'), function (e) { return e.innerHTML; }); 
        //map[12] is the table contain multiple tr where i wish to get the value out of td between each tr. 
        var data = map[12]; 
        // var newdata = '<html>\n<table>\n'+data+'\n</table>\n</html>'; 
        var mapout = [].map.data(__utils__.findAll('tbody tr'), function (e) { return e.innerHTML; }); 
        return mapout; 
       }); 

Répondre

0

Si vous voulez toutes les lignes (et je suppose que oui) cela devrait être un moyen plus facile de l'obtenir:

var rows = casper.evaluate(function() { 
    return document.querySelectorAll("table tbody tr"); 
}); 

Ensuite, vous pouvez throught itérer toutes les lignes.

+0

Je suppose que cela va faire ... mais si quelqu'un a une meilleure idée sera génial –