【问题标题】:use PhantomJS with PHP?将 PhantomJS 与 PHP 一起使用?
【发布时间】:2014-10-27 18:18:34
【问题描述】:

我正在尝试各种 PHP 方法来“获取”网站并将 HTML 输出保存到我​​服务器上的文件中。但是我尝试的 URL 包含 javascript。

我在我的 php 脚本输出中看到的 HTML 缺少一些内容(通过我指定的 URL 上的 Javascript 创建)。

我发现了一个叫做 PhantomJS 的东西,它显然用“处理过的”Javascript 解析 URL。

我发现的示例不完整,一次只显示 1 部分代码,没有任何完整/有用的工作脚本。

一些问题

1) - 我想我可以做这部分,尚未测试。

我可以使用 EXEC 或 SYSTEM 命令通过我的 PHP 脚本激活 PhantomJS。

我没有测试过,但我想我知道如何向 PhantomJS 发送 2 个变量

http://phantomjs.org/quick-start.html

猜测:

address = system.args[1];
value = system.args[2]; 

phantomjs loadspeed.js http://www.google.com56

(56 是第二个变量)我想我可以将几个变量传递给 PhantomJS。??

2) 我无法/尚未找到这些问题的答案。任何人都可以提供帮助。

a) 是否可以将网站的 HTML 结果保存到我指定的文件中(我传递给脚本的变量之一)。

b) 将 HTMl 代码传回 PHP 脚本并将其保存到数组/变量中。

有没有很好的例子 - 使用 PHP 脚本中的 phantom JS 的小而有效的脚本?

【问题讨论】:

  • 有很多假设性的问题。是的,它应该工作。现在,你没有任何需要帮助的地方。尝试一下,当您有具体问题时,我们很乐意提供帮助。这是我找到的good answer。您可以通过those (php+phantomjs) 问题查看自己。回答 2a:有 fs 模块。

标签: php phantomjs


【解决方案1】:

如果我正确地解决了您面临的问题,我建议您执行以下操作:

你可以使用的一个例子:

<?php
// An example of using php-webdriver.

require_once('lib/__init__.php');

// launching with GhostDriver

// remote host
//$host='http://162.243.175.134:8080';

//host launched on local machine
$host='http://127.0.0.1:8080';


$desired_capabilities =  DesiredCapabilities::phantomjs();
$driver = RemoteWebDriver::create($this->host,$desired_capabilities,5000);
$driver->get('http://www.google.com');

// this way you're able to get page source
echo $driver->getPageSource();  


?>

$driver-&gt;getPageSource();函数的实际结果: http://gyazo.com/4a5c4c1c378d7dc9714ddcc9e37b0174

一旦您将页面源转换为变量,您就可以将其保存到文件(在您的服务器上)或使用它执行其他操作。

我同意@Artjom B 的观点。sending and receiving data to/from phantomJs with php 的描述非常好。

希望我的想法对您有所帮助。

问候。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多