php - 在 PHP 中解释 JavaScript

标签 php javascript screen-scraping node.js serverside-javascript

我希望能够运行 JavaScript 并使用 PHP 获得结果,并且想知道是否有一个 PHP 库可以让我将其解析出来。我的第一个想法是使用 node.js,但由于 node.js 可以访问套接字、文件和其他东西,我想我宁愿避免这种情况。

理由:我正在使用 PHP 进行屏幕抓取,并且遇到了许多前端由 JavaScript 生成数据的场景,我想避免编写专门的过滤函数来执行操作JavaScript 基于每个案例,因为这需要很多时间。更一般的情况是直接解析 JavaScript。

否决:我真的不明白这个问题有什么争议,现代网络爬虫都知道这样做,唯一的区别是它们往往不是用 PHP 编写的。 [1]

[1] http://blogs.forbes.com/velocity/2010/06/25/google-isnt-just-reading-your-links-its-now-running-your-code/

最佳答案

这是一个有趣的问题,反对者对潜在的用例缺乏想象力。页面归档工具、打印脚本、预览图像 - 所有想要使用页面中包含的 JavaScript 操作文档的正当理由。

我不知道有任何现有的 PHP 实现,但您可能会适应 Mozilla 的 SpiderMonkey作为 PHP 模块,或作为操作 DOMDocument 并返回结果的独立工具。

我没有使用服务器端 JavaScript 的经验,但我认为可能需要处理一些问题:

  • documentwindow 等宿主对象不是 ECMAScript 规范的一部分(这些是实现浏览器提供的对象),因此您需要确保库提供等效的宿主对象。
  • 在服务器端环境中执行客户端脚本时可能会遇到安全问题。这很像允许用户提交一个 PHP 脚本进行评估,所以你需要确保安全沙箱是严密的。

另一个(也许)更安全和更容易实现的选项可能是使用作为浏览器运行的修改后的 FireFox 或 WebKit 实例,加载目标页面并将修改后的源返回到您的应用程序。

关于php - 在 PHP 中解释 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4331938/

相关文章:

php - 如何创建搜索表单,其中用户可以搜索三列。使用 PHP AND SQL AND HTML

javascript - D3 如何替换 SVG 元素

r - 使用 R 进行网页抓取,内容

java - 在java中使用正则表达式进行网页抓取

php - Html - 更改 slider 的宽度和高度

php - 在 zend framwork - Nginx - ubuntu 14.04 中使用 Controller 时出现 404

php - SQL 未返回所需的结果

javascript - 使用 .on() 委派而不是直接返回时返回单击的元素

javascript - 单击 'submit' 时将复选框值传递给 js

python - Digikey零件价格python脚本