PHP无头浏览器? [关闭]

Posted

技术标签:

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

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

【问题讨论】:

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

【讨论】:

***.com/questions/7525521/… 无头的人。就像 phantomjs 但用于 php。【参考方案7】:

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

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

【讨论】:

无头? php?不需要外部浏览器?

以上是关于PHP无头浏览器? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

C# (.NET) 的无头浏览器? [关闭]

适用于 Python 的无头浏览器(需要 Javascript 支持!)[关闭]

无头互联网浏览器? [关闭]

使用无头浏览器进行 Android Web Scraping [关闭]

是否有适用于Behave的Python无头浏览器,而不使用Selenium或真实的浏览器

无头浏览器是啥?它有啥用?