php 抓取网页生成图片(Shell脚本实现获取网页快照并生成缩略图使用心得脚本 )
优采云 发布时间: 2022-02-15 19:17php 抓取网页生成图片(Shell脚本实现获取网页快照并生成缩略图使用心得脚本
)
Shell脚本实现网页截图和缩略图生成
本文章主要介绍Shell脚本获取网页快照和生成缩略图的实现。本文使用phantomjs获取网页快照和ImageMagick生成缩略图。有需要的朋友可以参考以下
拍摄网页快照并生成缩略图可以分两步完成:
1、获取网页快照
2、生成缩略图
获取网页快照
这里我们使用phantomjs来实现。phantomjs的详细使用请参考官方网站。
1、安装
我的环境是CentOS 7,安装时直接下载源码。我下载的版本是2.0.0,按照官网的说明安装即可。
2、呼叫
对 phantomjs 的调用需要一个 js 脚本。这个js脚本接收两个参数,分别是URL url和快照文件名filename。脚本 snap.js 的内容如下:
复制代码代码如下:
/*
* desc: get snapshot from url
* example: phantomjs snap.js http://www.baidu.com baidu.png
*/
var page = require('webpage').create();
var args = require('system').args;
var pageW = 1024;
var pageH = 768;
page.viewportSize = {
width: pageW,
height: pageH
};
var url = args[1];
var filename = args[2];
page.open(url, function (status) {
if (status !== 'success') {
console.log('Unable to load ' + url + ' !');
phantom.exit();
} else {
window.setTimeout(function () {
page.clipRect = { left: 0, top: 0, width: pageW, height: pageH };
page.render(filename);
console.log('finish:', filename);
phantom.exit();
}, 1000);
}
});
这个脚本里还有一个小设置,就是设置浏览器打开页面的可见区域大小为1024*768,然后取第一屏的内容。
调用命令如下:
复制代码代码如下:
phantomjs snap.js baidu.png
注意:这里执行命令的用户需要对目录有写权限。
3、效果
得到的截图如下:
生成缩略图
ImageMagick 工具用于生成缩略图。ImageMagick 是一个非常强大的图像处理工具,可以对图像进行转换(格式转换、缩放、裁剪、模糊、反转等)、截图、图像显示等。详细使用方法请参考我使用 ImageMagick 的一篇文章。
1、安装
redhat系列可以使用yum安装:
复制代码代码如下:
# yum install ImageMagick ImageMagick-devel
其他平台安装请参考官方网站:,根据自己的系统选择对应的包或者自己编译源码。
2、呼叫
我们这里只使用图片缩放工具,语法是:
代码显示如下:
转换 -resize 320x240 baidu.png baidu_thumbnail.png
默认是按比例缩放。如果要强制缩放,可以在大小后添加感叹号:
代码显示如下:
转换 -resize 320x240!baidu.png baidu_thumbnail.png
3、效果
生成的缩略图如下:
集成脚本
如果想自动化前面两步,可以写一个shell脚本来实现:
代码显示如下:
# !/bin/bash
# desc: create snapshot from url
# example: sh createsnap.sh http://www.baidu.com baidu
URL=$1
IMAGE_NAME=$2
SNAPSHOT_NAME="${IMAGE_NAME}.png"
THUMBNAIL_NAME="${IMAGE_NAME}_thumbnail.png"
phantomjs snap.js $URL $SNAPSHOT_NAME
convert -resize 320x240 $SNAPSHOT_NAME $THUMBNAIL_NAME
exit 0