php 抓取网页生成图片(Shell脚本实现获取网页快照并生成缩略图使用心得脚本 )

优采云 发布时间: 2022-02-15 19:17

  php 抓取网页生成图片(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

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线