php-casperjs获取内部文本

时间:2014-10-10 10:14:57

标签: php dom casperjs

我使用php包装器为casperjs - https://github.com/alwex/php-casperjs

我在网络上自动执行一些重复性作业,我需要访问项目的innerText,但我并不完全清楚如何从casperjs浏览器访问dom。

我认为在js中我会是

var arr = document.querySelector('label.input__label--above').innerText;

但是我不确定如何从php包装器访问同一个数组?我已设法填写表单并使用几行代码导航到我想要的页面,但访问dom似乎并不明显。

我的包装名为$ casper,所以我一直在使用

$casper->start("google.com") 

作为一个例子,它应该把我放在谷歌页面,如果我然后想要访问dom,最终一些innerText可以告诉我怎么做?

2 个答案:

答案 0 :(得分:4)

通常这是通过PhantomJS和CasperJS中的evaluate完成的。 php-casperjs确实提供了evaluate函数,但它并不适用于您的用例,因为$casper->evaluate不会从页面上下文返回任何内容,而是对{{$casper的引用1}}。

这是拥有如此小包装的价格。它只是缺少CasperJS的重要部分。您可以使用JavaScript编写CasperJS脚本,并使用exec或其他类似函数从PHP调用它。

但是,您也可以尝试使用通过回调返回$casper的函数扩展textContent(请注意,innerText在PhantomJS中不可用)。由于CasperJS的异步特性,它必须通过回调来完成。我不完全确定这是可能的,不重写大部分包装器。

答案 1 :(得分:1)

为了以后参与任何其他努力实现这一目标的人的参考,我浏览了包装器的代码,并且在执行时,脚本中最后一页的html作为数组的一部分返回

$result = $casper->run()

希望这有助于其他人。