CasperJS 将数据传回 PHP

2024-01-03

PHP 正在使用 CasperJS 调用exec()命令。 CasperJS 完成检索网页部分内容等工作后,如何将检索到的数据返回给 PHP?


我认为将数据从 CasperJS 传输到另一种语言(例如 PHP)的最佳方法是将 CasperJS 脚本作为服务运行。由于 CasperJS 是在 PhantomJS 上编写的,因此 CasperJS 可以使用 PhantomJS 的嵌入式 Web 服务器模块(称为 Mongoose)。

有关嵌入式 Web 服务器如何工作的信息,请参阅here http://phantomjs.org/api/webserver/

下面是有关 CasperJS 脚本如何启动 Web 服务器的示例。

//define ip and port to web service
var ip_server = '127.0.0.1:8585';

//includes web server modules
var server = require('webserver').create();

//start web server
var service = server.listen(ip_server, function(request, response) {

    var links = [];
    var casper = require('casper').create();

    function getLinks() {
        var links = document.querySelectorAll('h3.r a');
        return Array.prototype.map.call(links, function(e) {
            return e.getAttribute('href')
        });
    }

    casper.start('http://google.fr/', function() {
        // search for 'casperjs' from google form
        this.fill('form[action="/search"]', { q: 'casperjs' }, true);
    });

    casper.then(function() {
        // aggregate results for the 'casperjs' search
        links = this.evaluate(getLinks);
        // now search for 'phantomjs' by filling the form again
        this.fill('form[action="/search"]', { q: 'phantomjs' }, true);
    });

    casper.then(function() {
        // aggregate results for the 'phantomjs' search
        links = links.concat(this.evaluate(getLinks));
    });

    //
    casper.run(function() {
            response.statusCode = 200;
            //sends results as JSON object
            response.write(JSON.stringify(links, null, null));
            response.close();              
    });

});
console.log('Server running at http://' + ip_server+'/');
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CasperJS 将数据传回 PHP 的相关文章

  • 使用 php 获取当前月份的最后 3 个月

    我想获取当前月份最近 3 个月的名称 例如当前月份是八月 所以 我想要六月 七月 八月这样的数据 我已经尝试过这段代码echo date F strtotime 3 months 它只返回六月 如何使用 php 获取当前月份的最后 3 个月
  • 通过 __get() 通过引用返回 null

    快速规格 PHP 5 3 error reporting 1 the highest 我正在使用 get 通过引用技巧神奇地访问对象中任意深度的数组元素 快速示例 public function get key return isset t
  • 在值中包含换行符

    我有一个 Word 模板 其中 php 代码中定义了值 在PHP代码中 document gt setValue Value1 value1 在word模板中 Value1 如何将包含两个值之间的断线的值包含在单词的值中 Replace n
  • PHP - 获取base64图像字符串解码并保存为jpg(生成空图像)

    嗨 我实际上是通过 ajax 发送一个 base64 图像字符串到一个 php 脚本 该脚本只是解码字符串并将内容保存为 jpg 文件 但结果是一张空图像 这怎么可能 PHP脚本 uploadedPhotos array photo 1 p
  • .htaccess 异常导致主目录出现问题

    这是我的目录结构 localhost or livehost app bootstrap public vendor code demo 这是我的 htaccess
  • 如何使用 Facebook SDK API 为页面/网址“点赞”?

    我正在使用这段代码 facebook gt api me likes post array url gt http www google com 我收到以下错误 Fatal error Uncaught OAuthException 200
  • 当sql连接中存在两个同名列时,如何从一个表列中获取值

    当我连接两个具有相同名称列的表时 我目前面临着尝试获取值的问题 例如 table1 date和table2 date 每个表中的日期不同 我将如何获取 日期 本例中的表1 我目前正在跑步 while row mysqliquery gt f
  • 在 Laravel 5 中截断表

    描述 我有一个充满测试数据的表 有时 我想清除它以获取新数据 我可以在 DBMS 应用程序中执行截断 例如MySQL 工作台 但我试图在我的应用程序中实现它 Goal 创建一个按钮 单击时截断数据库中的表 这是我的步骤 1 声明一条路线 R
  • 使用先前的反向引用作为命名捕获组的名称

    有没有办法使用对先前捕获组的反向引用作为捕获组的名称命名捕获组 这可能不可能 如果不可能 那么这就是一个有效的答案 下列 data description some description preg match data matches p
  • 如何在 PHP 中使用 cURL 发出同时包含 GET 和 POST 参数的请求?

    其他人已经问过如何从 perl java bash 等执行此操作 但我需要在 PHP 中执行此操作 并且我没有看到任何已提出的专门与 PHP 相关的问题 或包含 PHP 的答案 My code ch curl init url curl s
  • PHP:读取字体文件的 TrueType/OpenType 元数据

    如何阅读字体详细信息 例如 字体在其元数据中包含版权 姓氏 设计者 版本等信息 我还希望脚本能够计算文件中的字形数量 并返回字体支持的语言 例如 典型的字体可能包含西方语言 瑞典语和罗马语言支持 并具有数百个字形 它应该支持 truetyp
  • PHP Solr PECL 扩展安装

    我已经使用命令安装了 pecl solr pecl install solr 和梨使用 wget http pear php net go pear phar php go pear phar 重启Apache后 我仍然收到错误 Fatal
  • 如何在 yii2 中使用两个不同的模型登录或切换身份类别?

    我想允许用户从两个不同的模型登录 配置文件 user gt identityClass gt app models User one more class here enableAutoLogin gt false authTimeout
  • 使用php将数据存储到文本文件中?

    我正在尝试将数据存储在文本文件中 例如使用 php 将数组存储到文本文件中 而不是存储到 mysql 数据库中 例如 这里是要存储在文本文件中的数据 name gt john age gt 25 location gt australia
  • fgetcsv 在特定行打开?

    有没有办法使用 fgetcsv 在特定行上打开 我有一个非常大的 csv 想通过 ajax 一次运行大约 100 行 我可以轻松停止 while 循环 但如何在特定行上打开 或者这是不可能的 从第 100 行开始读取没有简单的方法 但您可以
  • JavaScript 验证和 PHP 验证?

    我正在使用 jquery 验证插件来验证空表单 我还应该在 PHP 中检查一下以确保 100 正确吗 或者用 javascript 验证就可以了 谢谢 您应该始终在服务器上进行验证 如果用户以某种方式不使用 Javascript 提交表单
  • 如何在 OS X 上使用 OpenSSL 1.0.1 编译 PHP 5.5.19

    我已经安装了 OpenSSL 1 0 1j usr local ssl现在我尝试使用此版本的 OpenSSL 编译 PHP 5 5 19 这是我的配置过程 export CFLAGS arch x86 64 export CXXFLAGS
  • 如何仅使用 PHP5 RecursiveDirectoryIterator 类递归显示具有特定文件类型的文件夹和子文件夹

    您好 我正在尝试使用 FilterIterator 上的扩展来获取 RecursiveDirectoryIterator 类 但由于某种原因 它仅在根目录上进行迭代 我的代码是这样的 class fileTypeFilter extends
  • 从数据库填充复选框

    我有两个表 第一个由与名称关联的 id 组成 1 汽车 2 火车 3 普通 ETC 第二个表由两个字段 user id 和第一个表中的 id 组成 例如 1 1 2 1 3 当用户转到该页面时 我试图重新填充选定的复选框 首先 您查询数据库
  • 从支付网关重定向回时用户会话丢失

    我已将 Cyber source 配置为我的支付网关 我能够导航到 cybersource 并进行付款 并能够成功重定向回该网站 我也可以取消付款并重定向回我的网站 我收到来自支付网关的响应 但是 用户在从支付网关重定向回来时会被注销 我正

随机推荐

  • 执行 com.android.build.gradle.internal.coverage.JacocoReportTask$JacocoReportWorkerAction 时发生故障

    我想为我的项目生成代码覆盖率 所以我添加了 debug testCoverageEnabled true 当我运行命令时gradlew createDebugCoverageReport我收到以下错误 Execution failed fo
  • Highcharts - 突出显示某个范围内的鼠标位置

    当鼠标位于 HIighCharts 中折线图的 xAxis 范围内时 我需要突出显示鼠标位置 我想显示一个圆圈来突出显示鼠标位置 但我只希望此功能适用于最后 25 个 xAxis 值 在 Highcharts 中可以做到这一点吗 一种方法是
  • 如何使用tensorflow.js面部地标检测模型获取面部的特定标志,例如嘴唇或眼睛

    我正在尝试改变眼睛和嘴唇的形状和位置 为此我使用tenserflow js人脸特征点检测模型 https github com tensorflow tfjs models tree master face landmarks detect
  • Webpack 4 – 简单的 js 功能在捆绑文件后不起作用

    我对 webpack 还比较陌生 我试图让一个简单的架构发挥作用 但似乎无法找出问题所在 我将尝试总结我的代码 package json 文件 devDependencies babel preset env 7 8 3 babel loa
  • cv2.kmeans 在 Python 中的用法

    我正在考虑使用 OpenCV 的 Kmeans 实现 因为它说更快 现在我使用包 cv2 和函数 kmeans 我无法理解参考文献中参数的描述 Python cv2 kmeans data K criteria attempts flags
  • 日期格式随 DT 和闪亮而变化

    我的问题是当我在计算机和服务器上使用数据表时formatDate在改变 我知道我正在使用method toLocaleDateString 也许这不是好方法 在我的电脑上它给了我我想要的格式 1 f vrier 2000 21 mars 2
  • 2 个 Firefox 附加组件之间的通信(跨扩展通信)

    如何在 2 个 Firefox 附加组件之间传递数据和消息 Google Chrome 的方式是这样的 here http code google com chrome extensions messaging html external
  • 我可以在 Sonata Admin 控制器中使用 prePersist/preUpdate 来保存多个对象吗?

    我有这个Alias entity use Gedmo Timestampable Traits TimestampableEntity class Alias use IdentifierAutogeneratedTrait use Tim
  • HttpURLConnection.getResponseCode() 在第二次调用时返回 -1

    当我使用的库 路标 1 1 SNAPSHOT 与远程服务器建立两个连续连接时 我似乎在 Android 1 5 上遇到了一个特殊问题 第二个连接总是失败并显示HttpURLConnection getResponseCode of 1 这是
  • AS3:合并 XML 文件

    这里有很多关于将 XML 与 Java 合并的帖子 但我似乎找不到任何针对同一任务的 Actionscript 参考 我有一组需要加载的 XML 文件 我希望它们在内存中排序为一个 XML 对象 例如 假设这些是我的 XML 文件 File
  • Spark SQL - gzip、snappy 和 lzo 压缩格式之间的区别

    我正在尝试使用 Spark SQL 来编写parquet file Spark SQL 默认支持gzip 但它也支持其他压缩格式 例如snappy and lzo 这些压缩格式有什么区别 压缩率 GZIP 压缩比 Snappy 或 LZO
  • 如何正确使用JVM -XX:MaxRAM选项? [复制]

    这个问题在这里已经有答案了 我使用以下参数运行 java 应用程序 bin bash export JVM OPTS XX MaxRAM 150m export JVM OPTS JVM OPTS XX UseSerialGC java J
  • 如何更改 IntelliJ 中所有模块的语言级别

    我有一个包含许多模块的项目 我们正在升级到 Java7 我希望我的编辑器能够反映这一点 现在我的所有模块都专门将语言级别设置为Java6 并且模块太多 我无法为每个模块更改此设置 如何将所有模块设置为 Java7 更好的是 如何设置所有模块
  • SharedPreferences 替换数据

    我有一个应用程序 每当我按下按钮时都会给我一些字符串 然后使用共享首选项保存该值 但是 我想限制此保存功能 因此它只会保存最后三个收到的字符串 其结构如下 字符串A 字符串 B 字符串 C 下次当我单击按钮时 它将将该值记录到字符串 A 中
  • Python:如何从列表中检查字符串中的子字符串? [复制]

    这个问题在这里已经有答案了 如何检查字符串中列表中包含的子字符串 例如检查字符串是否包含 字符串 列表中的元素 https stackoverflow com questions 500925 但是在 Python 中呢 试试这个测试 an
  • Lambda 表达式的代码覆盖率

    我在整个代码中看到一种模式 其中 lambda 表达式显示为未包含在代码覆盖范围内 调试器确实单步执行代码并且没有条件块 public CollectionModel List
  • Ocaml 变体类型

    无论我读什么教程 手册 OCaml 类型总是让我感到困惑 我需要定义一个类型 比如说测试 它包含以下形式 具有以下形式之一的类型 a b 测试 空 T t N n Seq x1 xn 我知道如何做前 3 个 但我完全不知道如何定义最后一个形
  • 从 git 标签获取版本(通过 pbr)

    I use pbr https pypi python org pypi pbr用于包装 它从 git 标签获取版本并将其应用于 setup py 现在我还想在包中提供可用的版本 例如有一个 version 属性 我可以使用pbr图书馆为此
  • Ionic 3:从 PlayStore 链接获取价值

    我有一个 Ionic 3 应用程序 我想根据 Playstore 的下载链接在其中设置一些变量 例如 http linktoplaystore com app account 4会将我的应用程序内的帐户变量设置为 4 有什么方法可以实现此目
  • CasperJS 将数据传回 PHP

    PHP 正在使用 CasperJS 调用exec 命令 CasperJS 完成检索网页部分内容等工作后 如何将检索到的数据返回给 PHP 我认为将数据从 CasperJS 传输到另一种语言 例如 PHP 的最佳方法是将 CasperJS 脚