使用casper.evaluate()在casperjs上抓取表的更好方法

时间:2017-05-12 11:41:14

标签: javascript web-scraping casperjs

我试图抓取一个html(只使用没有ID的表作为结构>并且尝试获取每个值但是失败了,我必须使用findAll函数但它接缝得到null。

下面是我在第二层获得的表格数据。

<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/>

以下是我尝试在casper.evaluate()中应用的代码,但它返回null但不是我需要的数据。

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;
                });

1 个答案:

答案 0 :(得分:0)

如果你想要所有的行(我猜是这样的话),这应该是一种更简单的方法:

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

之后你可以遍历所有行。