我希望能够运行JavaScript并使用PHP获得结果,并且想知道是否有一个PHP库允许我解析它。我的第一个想法是使用node.js,但由于node.js可以访问套接字、文件和其他东西,我想我更愿意避免这样做。
的基本原理:--我正在用进行屏幕抓取,并且遇到了许多情况,其中的数据是由JavaScript在前端生成的,我想避免编写专门的过滤函数,以便在每个案例的基础上对JavaScript进行操作,因为这需要很多时间。更一般的情况是直接解析JavaScript。
否决:--我不知道这个问题有什么争议,现代的网络爬虫都知道,唯一的区别是它们往往不是用PHP编写的。1
1
发布于 2010-12-04 23:53:17
这是一个有趣的问题,选民对潜在的用例缺乏想象力。页面归档工具、打印脚本、预览图像--所有想要使用页面中包含的JavaScript操作文档的有效理由。
我不知道现有的任何PHP实现,但是您可能可以将Mozilla的SpiderMonkey修改为一个PHP模块,或者作为一个独立的工具来操作一个DOMDocument并返回结果。
我还没有使用服务器端JavaScript的经验,但我认为可能需要处理一些问题:
document和window这样的宿主对象不是ECMAScript规范的一部分(这些对象是由实现浏览器提供的),因此您需要确保库提供了等效的宿主对象。另一个(可能)更安全、更容易实现的选项可能是使用作为浏览器运行的修改后的FireFox或WebKit实例,加载目标页面并将修改后的源代码返回到应用程序。
发布于 2013-10-21 10:45:12
从PHP5.3中可以使用PHP的V8JS扩展。它是一个本机库,它使用新的Google V8 Javascript引擎来执行JS并返回结果。
这很好,因为您可以在PHP数组中传递vars,并且可以很好地解释
发布于 2010-12-04 22:13:24
实际上,NodeJS (或谷歌v8的其他衍生产品)可能是最好的选择。如果你关心nodejs能做的各种事情(例如。(套接字等等),您可能可以通过删除模块和/或加载项来“剥离它”--我认为即使是内置的东西最终也是以这样一种方式实现的,这样就可以很容易地将其剥离掉。
另一种方法可能是简单地替换、重写或从require中删除node.js函数。
还有恩维,它可以使运行js变得更容易,而js是设计用来运行浏览器的。
https://stackoverflow.com/questions/4331938
复制相似问题