搭建phantomjs
首先进入http://phantomjs.org/download.html
选择你的操作系统进行下载安装包小杰拿centos7.x 64位的VPS进行搭建的
运行命令
wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2
下载文件到服务器,因为文件是bz2格式,所以我们需要使用bzip2命令进行解压
bzip2 -d phantomjs-2.1.1-linux-x86_64.tar.bz2之后在执行tar解压命令到目录/user/local/
tar xvf phantomjs-2.1.1-linux-x86_64.tar -C /usr/local/然后安装依赖软件
yum -y install wget fontconfig
之后我们重命名文件夹
mv /usr/local/phantomjs-2.1.1-linux-x86_64/ /usr/local/phantomjs之后创建一个软链接,具体作用就是能直接调用phantomjs,就跟安装python等软件是一个原理
ln -s /usr/local/phantomjs/bin/phantomjs /usr/bin/然后我们执行phantomjs
[root@root ~]# phantomjs phantomjs>
到这样就完成了安装phantomjs。上面的安装教程是参考https://www.cnblogs.com/zengguowang/p/6911812.html
php调用phantomjs
下面是说说如何在web上运行phantomjs
phantomjs是系统软件,我们需要用到php的shell_exec函数,启动这个函数后一定要重启php服务才能生成
首先我们在网站根目录中创建一个test.js的文件,内容代码如下
var page = require('webpage').create(); //viewportSize being the actual size of the headless browser page.viewportSize = { width: 1024, height: 768 }; //the clipRect is the portion of the page you are taking a screenshot of page.clipRect = { top: 0, left: 0, width: 1024, height: 768 }; //the rest of the code is the same as the previous example page.open('https://blog.youngxj.cn/', function() { page.render('germy.png'); phantom.exit(); });然后我们在服务器中路径移动到网站根目录,然后执行命令
[root@root blog.youngxj.cn]# phantomjs test.js等待服务器执行完成后,你就会在网站根目录发现多出一张图片
图片上虽然显示的不完整,但是说明我们的网站截图服务能正常使用了
那如何在web中调用运行呢,下面给大家写个小案例,你就能看懂了
var page = require('webpage').create(); var sys = require('system');//创建system对象 var url = sys.args[1]; var filename = sys.args[2]; // 浏览器窗口大小 page.viewportSize = { width: 1024, height: 768 }; // 网页截图窗口大小 page.clipRect = { top: 0, left: 0, width: 1024, height: 768 }; // 进行网页打开并保存为图片的操作 page.open(url, function() { page.render(filename); phantom.exit(); });以上代码重新保存为test1.js
以下代码保存为index.php
<?php // 网站url[一定要加http://] $url = $_GET['url']; // 图片名称[一定要写上图片格式] $filename = $_GET['name']; $ex = "phantomjs test1.js $url $filename"; shell_exec($ex);之后我们访问
http://域名/index.php?url=https://blog.youngxj.cn&name=a.png
就会发现根目录出现一个a.png
到现在我们的php就能够利用get参数进行网站截图了。很多眼睛细的同学应该会发现两个截图效果中没有中文字符,全是乱码
这个是服务器本身不包含中文字符,需要自己手动安装中文字符字体(具体如何操作可以参考https://www.linuxidc.com/Linux/2016-09/135548.htm)
当然phantomjs远不止这么点功能,他还支持模拟head头,cookie,ua等数据,还可以进行控制台信息输出,网站加载项记录等等功能,更多参数可以参考官网http://phantomjs.org/
也可以参考(中文):https://www.cnblogs.com/liuliliuli2017/p/6746555.html
发表评论: