querySelectorAll() 打印所有节点的文本内容

querySelectorAll() print textcontent of all nodes

这是我用来从网页获取所有文本内容的代码。但它不起作用,我不知道我做错了什么。

<tr style="color:#000000" class="odd">
  <td style="padding:5px 5px 5px 10px" align="center"><input type="checkbox" name="cards[]" id="card_278002" value="278002"></td>
  <td align="center">411756</td>
  <td align="center">Sherrie</td>
  <td align="center">89852</td>
</tr>

这就是我的 Js 代码:

function get42() {
    return document.querySelectorAll('tr>td').textContent;
}
console.log(page.evaluate(get42));

输出:null ..我做错了什么?

你不能那样使用 document.querySelectorAll。它returns一个NodeList。您必须自己从每个节点获取 textContent

更长的路:

function get42() {
    var tds = document.querySelectorAll('td'),
        result = [];
    for (var i = 0; i < tds.length; i++) {
        result.push(tds[i].textContent);
    }
    return result;
}

或更短:

function get42() {
    var tds = document.querySelectorAll('td');
    return Array.prototype.map.call(tds, function(t) { return t.textContent; });
}

js fiddle