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

Better ways to scraping table on casperjs using casper.evaluate()

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

下面是我在第二层得到的table数据。

<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() 中应用的代码,但它是 return 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;
                });

如果您想要所有行(我猜是这样),这应该是一种更简单的获取方式:

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

之后您可以遍历所有行。