【问题标题】:PHP Headless Browser? [closed]PHP无头浏览器? [关闭]
【发布时间】:2011-09-28 12:28:01
【问题描述】:

是否有用于 PHP 的无头浏览器库?想要内置 JS 引擎的东西。 FOSS 首选。

【问题讨论】:

  • PHP 真的很适合这个任务。唯一接近完全 php 的是 Selenium,这也不是最好的,因为它只是操纵浏览器而不是真正的无头。
  • 后端需要什么?全变形 DOM 树或图形?如果图形——你根本不会有任何“无头”解决方案:它无论如何都具有 X.org 依赖项。
  • 7 年后,现在谷歌浏览器提供了一个无头版本,您可以在那里找到一个 php 库来操作它:github.com/chrome-php/headless-chromium-php

标签: php browser headless-browser javascript-engine


【解决方案1】:

好吧,有人可以创建一个在 PHP 中运行的混蛋无头 Web 浏览器,并配有 Javascript support implemented in PHP

【讨论】:

    【解决方案2】:

    PhantomJS - http://phantomjs.org/

    PhantomJS 是一个带有 JavaScript API 的无头 WebKit。它具有对各种 Web 标准的快速原生支持:DOM 处理、CSS 选择器、JSON、Canvas 和 SVG。

    如果需要bake your own,您可以将其与 php-PhantomjsRunner (现已弃用) 之类的东西结合使用。

    当设置并准备好开始使用 PhantomJS 进行测试时,请从各种 Testing Frameworks 中挑选一个供您使用。

    我最近也遇到了this tutorial from tutsplus,它应该对任何人有帮助吗?

    【讨论】:

    • PHP 不是 JS .....
    • @JoeRegan 更新了答案并包含了更多 PHP 资源。 PHP只是达到目的的一种手段,最终OP需要javascript。一个完整的 PHP 解决方案最终会很糟糕,或者如果不调用其他命令行程序就无法完成。
    • @AnthonyHatzopoulos 我不认为他在问什么。据我所知,完整的 PHP 解决方案。
    • @JoeRegan 实际上 webkit 是 C 和 C++。 PhantomJS 使用 JS 来运行它的脚本,这是有充分理由的(您可以轻松地将 PhantomJS 控制 JS 与正在运行的页面 JS 交错 - 我有,而且它摇摆不定)。您可以编写一个小型 RPC 服务器来“桥接” PhantomJS 运行实例与您的 PHP 运行应用程序。你还想要什么?
    • 现在幻象被抛弃了github.com/ariya/phantomjs/issues/15344
    【解决方案3】:

    使用 HTMLUnit driver,它是 Selenium 项目的一部分。 WebDriver 基于 Webkit(我相信),因此使用 HTMLUnit(来自 Selenium)基本上是 Java 解决方案。然后,我相信您可以从 PHP 中调用 Java 代码,尽管我不确定如何使其正常工作。

    【讨论】:

      【解决方案4】:

      查看mink,它支持zombie 作为后端。

      它看起来相当不错,而且似乎得到了很好的支持。


      编辑

      不幸的是,php 没有原生的 javascript 解释器;因此,如果您正在寻找包含 javascript 支持的 pure php 实现,目前,您将找不到它。对于带有 javascript 支持的 headless,您将不得不在后端依赖 node.js 或 phantomjs 之类的东西。

      我相信您已经看过它们,但对于其他领先或缺乏 javascript 支持的选项,Mink's other backends 值得细读。

      【讨论】:

      • 如果它使用了僵尸,那意味着它使用了 node.js ?
      • 是的,僵尸使用 node.js
      • 对于 PHP 中的 Javascript:include-once.org/p/phpjs
      【解决方案5】:

      Goutte 是一个简单的 PHP 无头浏览器。 https://github.com/fabpot/Goutte

      可惜不支持 JS。

      【讨论】:

        【解决方案6】:

        听起来您需要http://seleniumhq.org/,它也可以与PHPUnit 一起使用来运行单元测试。

        也可以看看SimpleTest Browser

        【讨论】:

        【解决方案7】:

        如果您不限于 PHP,或者您能够使用系统调用,请查看 xvfb,它是一个虚拟帧缓冲区,您可以使用它来运行具有完整 JS 功能的基于 Linux 的浏览器 (firefox)。您甚至可以拉入屏幕数据,并将其写入文件。

        我之前在收集特定指标时已经这样做了。

        【讨论】:

        • 无头? php?不需要外部浏览器?
        猜你喜欢
        • 2010-10-23
        • 2012-04-27
        • 2015-02-11
        • 2013-08-08
        • 2013-06-28
        • 2013-09-03
        • 1970-01-01
        • 2014-09-08
        相关资源
        最近更新 更多