shell脚本获取网页快照并生成缩略图
获取网页快照并生成缩略图可分两步进行:
1、获取网页快照
2、生成缩略图
获取网页快照
这里我们用 phantomjs 来实现。关于 phantomjs 的详细用法可参考官方网站。
1、安装
我的环境是CentOS6.5,安装时直接下载 tarball 然后解压即可。
# wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-1.9.8-linux-i686.tar.bz2 # tar -jxvf phantomjs-1.9.-linux-i686.tar.bz2 # cp phantomjs-1.9.-linux-i686/bin/phantomjs /bin/phantomjs
第二步中解压后bin目录下的 phantomjs 二进制文件即是可调用命令。
第三步是为了在以后调用命令时不必输入命令全路径。
2、调用
phantomjs的调用需要一个js脚本。这个js脚本接收两个参数,分别是网址url和快照文件名称filename,脚本snap.js内容如下:
/*
* desc: get snapshot from url
* author: 十年后的卢哥哥(http://www.cnblogs.com/lurenjiashuo/)
* 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 http://www.baidu.com baidu.png
注意:这里执行命令的用户需要对目录有写权限。
3、效果
获取的截图如下:

生成缩略图
生成缩略图用的是ImageMagick工具,ImageMagick是个非常强大的图片处理工具,可对图片进行转化(格式转换、缩放、剪切、模糊、反转等)、屏幕截图、图片显示等,详细用法可参考 我的ImageMagick使用心得 一文。
1、安装
redhat系列可使用yum安装:
# yum install ImageMagick ImageMagick-devel
其他平台安装请参考官方网站:http://www.imagemagick.org/script/binary-releases.php,根据你的系统选择相应的包或自己编译源码。
2、调用
我们这里只使用图片缩放工具,语法为:
convert -resize 320x240 baidu.png baidu_thumbnail.png
默认是按比率缩放,如果要强制缩放,可以在尺寸后面加感叹号:
convert -resize 320x240! baidu.png baidu_thumbnail.png
3、效果
生成的缩略图如下:

整合脚本
如果希望将上两步自动化,可以写一个shell脚本实现:
# !/bin/bash
# desc: create snapshot from url
# autor: 十年后的卢哥哥(http://www.cnblogs.com/lurenjiashuo/)
# example: sh createsnap.sh http://www.baidu.com baidu URL=$ IMAGE_NAME=$ 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
参考文档
shell脚本获取网页快照并生成缩略图的更多相关文章
- [转]Phantomjs实现获取网页快照并生成缩略图
Shell脚本实现获取网页快照并生成缩略图 这篇文章主要介绍了Shell脚本实现获取网页快照并生成缩略图,本文获取网页快照使用phantomjs.生成缩略图使用ImageMagick,需要的朋友可以参 ...
- 在 shell 脚本获取 ip、数字转换等网络操作
在 shell 脚本获取 ip.数字转换等网络操作 ip 和数字的相互转换 ip转换为数字 :: function ip2num() { local ip=$1 local a=$(echo $ip ...
- shell脚本获取mysql插入数据自增长id的值
shell脚本获取mysql插入数据自增长id的值 在shell脚本中我们可以通过last_insert_id()获取id值,但是,需要注意的是,该函数必须在执行插入操作的sql语句之后,立即调用,否 ...
- 关于使用java执行shell脚本获取centos的硬盘序列号和mac地址
1.获取硬盘序列号: 新建shell脚本文件: identifier.sh, 内容为: diskdata=`fdisk -l` diskleft=${diskdata#*"identifie ...
- 014-交互式Shell和shell脚本获取进程 pid
Linux 的交互式 Shell 与 Shell 脚本存在一定的差异,主要是由于后者存在一个独立的运行进程 1.交互式 Bash Shell 获取进程 pid 在已知进程名(name)的前提下,交互式 ...
- [Python陷阱]os.system调用shell脚本获取返回值
当前有shell个脚本/tmp/test.sh,内容如下: #!/bin/bashexit 11 使用Python的os.system调用,获取返回值是: >>> ret=os.sy ...
- 通过shell脚本获取日期,并赋给变量
通过shell获取当前8位日期,并赋给变量,并且使用变量作为文件名,建立文件夹 代码如下: ls_date=`date +%Y%m%d` mkdir ${ls_date} 上面两句代码虽然简单 但是在 ...
- zabbix3.0.4-agent通过shell脚本获取mysql数据库登陆用户
zabbix3.0.4获取数据库登陆用户趋势详解 主要思路: 通过zabbix客户端shell脚本mysql命令取出用户表中的数据将结果反馈给zabbix,画出趋势图 1.修改zabbix-agent ...
- linux下使用shell脚本获取终端宽度
获取终端大小时候的学习 学习日期:2018/11/3 问题来源: 在写shell脚本时想输出一行占满整个终端屏幕宽度的 横杠 发现for循环会导致执行缓慢 解决方法: 使用yes 命令 sed '50 ...
随机推荐
- 前端必须要掌握的几个CSS3的属性
随着Css3和html5的风靡,越来越多的前端人员开始学习Css3,今天的文章就是来说说前端应该掌握10个Css3属性. 1. Border-radius Border-radius是一大堆CSS3属 ...
- 进程—内存描述符(mm_struct)
http://blog.csdn.net/qq_26768741/article/details/54375524 前言 上一篇我们谈论了task_struct这个结构体,它被叫做进程描述符,内部成员 ...
- 在vue中同时使用过渡和动画
在上次的动画中,在显示和隐藏有动画效果,但是,刷新页面的时候,第一次的显示没有动画效果 需求:刷新页面的时候也有动画效果 <transition name='fade' appear enter ...
- 2017.9.18 include指令和include动作有什么区别?
问题:include指令和include动作有什么区别? 答:include指令合并静态文档或Jsp页面中的内容,可以用于包括动态生成的输出结果,因此可以包含一个Servlet include指令在编 ...
- System.Web.UI.Page
mdsn:点击查看此类介绍 git: 点击查看封装方法 消息弹框,消息弹框跳转,自定义脚本信息 定义:表示一个从托管 ASP.NET Web 应用程序的服务器请求的 .aspx 文件(也称为 ...
- CSS 滤镜技巧与细节
本文主要介绍 CSS 滤镜的不常用用法,希望能给读者带来一些干货! 注意:ie不兼容 本文所描述的滤镜,指的是 CSS3 出来后的滤镜,不是 IE 系列时代的滤镜,话不多说,直接开车,语法如下: { ...
- Python 文件访问模式
f = open('xxx文件', '访问模式') r 以只读方式打开文件(read).文件的指针将会放在文件的开头.默认模式. w 打开一个文件只用于写入(write).如果该文件已存在则 ...
- 打包时ElementUI使vendor.js文件体量过大优化方法
<h1> 1.在index.html中以CDN的方式引入 </h1> <p> 引入的时候注意:要先在引入之前引入VUE否则会报undedined prototype ...
- scoped,会使设置UI组件库的样式识别不出来
未设置 scoped 作用域:显示效果 设置作用域的效果:ui组件默认的值(你怎么设置都不管用)
- PCA 实例演示二维数据降成1维
import numpy as np # 将二维数据降成1维 num = [(2.5, 2.4), (0.5, 0.7), (2.2, 2.9), (1.9, 2.2), (3.1, 3.0), (2 ...