杨小杰博客提供免费教程下载和网站搭建技术教程,主要分享和发布网站源码,致力创造一个高质量网络资源教程的分享平台

PhantomJS搭建并实现网站快照截图教程

Young小杰2018-6-17 14:45网站搭建(6)1058查询中……小标签: 技术教程 网站快照

搭建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

wget下载.jpg

下载文件到服务器,因为文件是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

yum依赖软件.jpg

之后我们重命名文件夹

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://www.youngxj.cn/', function() {
  page.render('germy.png');
  phantom.exit();
});
然后我们在服务器中路径移动到网站根目录,然后执行命令
[root@root www.youngxj.cn]# phantomjs test.js
等待服务器执行完成后,你就会在网站根目录发现多出一张图片
截图成功.jpg
图片上虽然显示的不完整,但是说明我们的网站截图服务能正常使用了

那如何在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://www.youngxj.cn&name=a.png

就会发现根目录出现一个a.png

截图成功1.jpg

到现在我们的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

发表评论:

发表评论:

  • Young小杰 站长

    每当我找到成功的钥匙,就发现有人把锁芯给换了…回复了[啊]

  • Young小杰 站长

    是金子一定会发光,是银子一定会花光,是裙子一定会走光,是节操一定要丢光。

  • avatar
    酸奶 Lv 1

    shell_exec貌似这个函数一般是禁用的 属于gao危函数

    • Young小杰 站长

      回复了酸奶:本身就是高危函数,所以我都不想说了,愿意用的肯定知道风险

  • avatar
    Hannah Lv 1

    写得真好,主题很好看。是啥来的。