注意:本文是在windows2019系统下运行,本人亲测有效,其他环境未进行验证
2022.6.26 windows2022也进行了测试,要稍微多一点东西,本文也进行了说明
2022.7.15 测试了php8.0,一切正常
1、配置系统环境
新系统windows2019→安装宝塔→安装iis+php7.4→创建网站
2、安装phantomjs
参考下面教程进行安装
这里需要记录下phantomjs的安装路径,后续程序里面需要用到
3、使用composer安装jonnyw/php-phantomjs
①安装composer
参考下面教程
②安装jonnyw/php-phantomjs
特别注意:要使用composer进行安装,需要进入php7.4删除禁用函数putenv,不然会出现下面错误
参考网址:https://jonnnnyw.github.io/php-phantomjs/
a.打开Windows PowerShell,并进入到网站根目录下
cd d:/wwwroot/ceshi
b.运行命令安装jonnyw/php-phantomjs
注意:如果系统是windows2022,就需要去删除禁用函数proc_get_status,不然会出现下面的错误
然后输入下面的命令
composer require "jonnyw/php-phantomjs:4.*"
安装成功如下
安装成功后网站根目录下面会多一个vendor文件夹,里面包含的内容如下
4、测试jonnyw/php-phantomjs是否安装成功
①在网站根目录新建一个php文件,命名为ceshi.php,添加下面的代码到php文件中
注意:这个时候需要去删除禁用函数proc_open,不然会出错,具体会出现的错误可以看后面
<?php
require 'vendor/autoload.php';
use JonnyW\PhantomJs\Client;
$client = Client::getInstance();
$client->getEngine()->setPath('D:\ruanjian\phantomjs-2.1.1-windows\bin\phantomjs.exe'); //这里的路径为你实际安装phantomjs的位置,请根据需要修改
$client->getEngine()->addOption('--load-images=true'); //设为false表示禁止加载图片
$client->getEngine()->addOption('--ignore-ssl-errors=true'); //忽略ssl错误
//具体设置,参考网址https://phantomjs.org/api/command-line.html进行添加
$link = 'https://www.binbinbiji.com/'; //需要请求渲染的网址
$request = $client->getMessageFactory()->createRequest();
$response = $client->getMessageFactory()->createResponse();
//$request->addSetting('userAgent', 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36');//设置ua,上面和下面方法都行
$request->addHeader('user-agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36'); //设置UA,上面和下面方法都行
$request->addHeader('cookie', ''); //设置cookie
$client->isLazy(); // 让客户端等待所有资源加载完毕
$request->setTimeout(30000); // 设置超时时间(超过这个时间停止加载并渲染输出画面)
$request->setMethod('GET'); //设置请求方法
$request->setUrl($link); //设置请求连接
$client->send($request, $response); //发送请求获取响应
//echo $response->isRedirect(); //网站是否有跳转
//echo $response->getRedirectUrl(); //获取跳转后的网址
echo $response->getContent(); //输出渲染后的源码内容
/*
if($response->getStatus() === 200) {
//输出抓取内容
echo $response->getContent();
//获取内容后的处理
}*/ //如果注释掉上面的输出,启用下面的,就必须状态码为200的才行,就不能获取到跳转后的内容了。
②浏览器中打开网址,出现下面错误
Warning: proc_open() has been disabled for security reasons in D:\wwwroot\ceshi\vendor\jonnyw\php-phantomjs\src\JonnyW\PhantomJs\Procedure\Procedure.php on line 107
Fatal error: Uncaught JonnyW\PhantomJs\Exception\ProcedureFailedException: Error when executing PhantomJs procedure - proc_open() did not return a resource in D:\wwwroot\ceshi\vendor\jonnyw\php-phantomjs\src\JonnyW\PhantomJs\Procedure\Procedure.php:138 Stack trace: #0 D:\wwwroot\ceshi\vendor\jonnyw\php-phantomjs\src\JonnyW\PhantomJs\Procedure\ProcedureValidator.php(84): JonnyW\PhantomJs\Procedure\Procedure->run(Object(JonnyW\PhantomJs\Procedure\Input), Object(JonnyW\PhantomJs\Procedure\Output)) #1 D:\wwwroot\ceshi\vendor\jonnyw\php-phantomjs\src\JonnyW\PhantomJs\Procedure\ProcedureValidator.php(61): JonnyW\PhantomJs\Procedure\ProcedureValidator->validateSyntax('\n\n/**\n * Set up...') #2 D:\wwwroot\ceshi\vendor\jonnyw\php-phantomjs\src\JonnyW\PhantomJs\Procedure\ProcedureCompiler.php(107): JonnyW\PhantomJs\Procedure\ProcedureValidator->validate('\n\n/**\n * Set up...') #3 D:\wwwroot\ceshi\vendor\jonnyw\php-phantomjs\src\JonnyW\PhantomJs\Client.php(160): JonnyW\PhantomJs\Procedure\ProcedureCompiler->compile(Object(JonnyW\P in D:\wwwroot\ceshi\vendor\jonnyw\php-phantomjs\src\JonnyW\PhantomJs\Procedure\Procedure.php on line 138
意思是proc_open函数被禁用了,我们去php7.4里面删除禁用函数proc_open就行了
③再次打开网址,这个时候网站正常打开可以访问了,安装成功
到此为止。
发布者:彬彬笔记,转载请注明出处:https://www.binbinbiji.com/php/2479.html