Casperjs - 获取所有元素的列表,然后对返回的数组的每个成员执行操作

时间:2014-01-24 02:52:28

标签: javascript web-crawler phantomjs casperjs

我是Casperjs的新手,我正在尝试迭代一系列元素并对它们执行与Casper相关的任务。但是,我在检索要执行这些Casper任务的对象数组时遇到问题。我正在使用此函数选择所有元素的列表

getLinks = ->
  links = document.getElementsByClassName('text-item')

然后用

评估函数
casper.then( ->
  links = this.evaluate(getLinks)
)

最后尝试用

打印出数组
casper.run( ->
  this.echo(links).exit()
)

但所有返回的内容都是[object Object]。我究竟做错了什么?当我在浏览器中运行document.getElementsByClassName('text-item')时,会返回一组<p>标签(我正在寻找的),所以我不确定出了什么问题。

非常感谢任何帮助。谢谢!

1 个答案:

答案 0 :(得分:0)

您无法使用evaluate返回对象。

您应该尝试将所需的原始数据(在您的情况下为文本信息)放在数组中并返回此数组而不是返回对象数组。

另一种可行的方法(未经考虑的思考)是使用JSON.stringify()和JSON.parse()来绕过evaluate()限制。