节点列表数组仅返回第一个元素

时间:2018-03-26 20:13:31

标签: javascript phantomjs web-crawler

我正在使用PhantomJS来抓取一些数据

TypeError: null is not an object (evaluating 'a[i].innerHTML')

通过childNodes到控制台的第一个循环工作 - 它将每个子节点打印到控制台

然而,第二个循环似乎不起作用 - 它只打印第一个值并显示错误{{1}}

这里有什么问题?

1 个答案:

答案 0 :(得分:2)

根据PhantomJS docspage.evaluate()的返回值必须是JSON可序列化的。我猜想PhantomJS的DOM节点的内部表示不是。

如果你这样做了(在page.evaluate()的回调函数内)?

root.a = page.evaluate(function (el, i) {
  var element = document.getElementsByClassName('parameterfull')[0];
  var children = Array.prototype.slice.call(element.childNodes);
  var temp = children.map(function(node) { return node.innerHTML });
  for (i = 0; i < temp.length; i++) {
    console.log(temp[i])
  }
  return temp;
});