PhantomJS 是一个基于 WebKit 的服务器端 JavaScript API。它全面支持web而不需浏览器支持,其快速,原生支持各种Web标准: DOM 处理, CSS 选择器, JSON, Canvas, 和 SVG。 PhantomJS 可以用于 页面自动化 , 网络监测 , 网页截屏 ,以及 无界面测试 等。

开始

1、下载phantomjs

  在http://phantomjs.org/download.html中下载phantomjs,我这里是在window系统下面操作的,所以我这里就下载第一个window版本。

2、解压phantomjs并配置环境变量

  下载完成之后,我这边放在E盘的,解压到当前文件夹,我这里的路径就是E:\phantomjs-2.1.1-windows。把路径E:\phantomjs-2.1.1-windows\bin添加至环境变量path里面。在cmd命令行中使用phantomjs --version能看见版本号,就表示设置成功了。在cmd命令中使用phantomjs E:/phantomjs-2.1.1-windows/examples/hello.js 就可以看见Hello, world!表示可以使用了。

3、java使用phantomjs案例(对网页截屏)

  如果我们想在java里面种使用,直接通过Process执行cmd命令就行了,请看下面例子

    public static void main(String[] args){
String url = "http://news.baidu.com";
String saveImgPath = "C:\\Users\\Administrator\\Desktop\\百度新闻.png"; String path = "E:/phantomjs-2.1.1-windows/";
Runtime rt = Runtime.getRuntime();
try {
Process p = rt.exec(path + "/bin/phantomjs.exe "+ path +"examples/rasterize.js " + url.trim() + " " + saveImgPath );
p.waitFor();
} catch (Exception e) {
e.printStackTrace();
}
}

  修改E:/phantomjs-2.1.1-windows/examples/rasterize.js

"use strict";
var page = require('webpage').create(),
system = require('system'),
address, output, size; address = system.args[1];//需要截图的地址
output = system.args[2];//截图保存位置
page.viewportSize = { width: 1360, height: 600 };
page.open(address, function (status) {
if (system.args.length > 3 ) {//截图的宽高
console.log("three param!");
size = system.args[3].split('*');
if (size.length === 2) {
page.viewportSize = { width: size[0], height: size[1]};
page.clipRect = { top: 0, left: 0, width: size[0], height: size[1] };//从什么地方开始截图、到什么地方结束
}
}else {
// 通过在页面上执行脚本获取页面的渲染高度
var bb = page.evaluate(function () {
return document.getElementsByTagName('html')[0].getBoundingClientRect();
});
// 按照实际页面的高度,设定渲染的宽高
page.viewportSize = { width: bb.width, height: bb.height};
page.clipRect = {
top: bb.top,
left: bb.left,
width: bb.width,
height: bb.height
};
} if (system.args.length > 4) {//截图比例
console.log("four param!bili:" + system.args[4]);
page.zoomFactor = system.args[4];
} if (status !== 'success') {
console.log('Unable to load the address!');
phantom.exit(1);
} else {
window.setTimeout(function () {
page.render(output);
phantom.exit();
}, 5000);
}
});

使用PHANTOMJS对网页截屏的更多相关文章

  1. 利用PhantomJS进行网页截屏

    利用PhantomJS进行网页截屏 关于PhantomJS PhantomJS 是一个基于WebKit的服务器端 JavaScript API.它全面支持web而不需浏览器支持,其快速,原生支持各种W ...

  2. php结合phantomjs实现网页截屏、抓取js渲染的页面

    首先PhantomJS快速入门 PhantomJS是一个基于 WebKit 的服务器端 JavaScript API.它全面支持web而不需浏览器支持,其快速,原生支持各种Web标准: DOM 处理, ...

  3. 利用PhantomJS进行网页截屏,完美解决截取高度的问题

    关于PhantomJS PhantomJS 是一个基于WebKit的服务器端 JavaScript API.它全面支持web而不需浏览器支持,其快速,原生支持各种Web标准: DOM 处理, CSS ...

  4. PhantomJS linux系统下安装步骤及使用方法(网页截屏功能)

    PhantomJS 是一个基于 WebKit 的服务器端 JavaScript API.它全面支持web而不需浏览器支持,其快速,原生支持各种Web标准: DOM 处理, CSS 选择器, JSON, ...

  5. Java实现网页截屏功能(基于phantomJs)

    公司最近有个需求:把用户第一次的测量身体信息和最近一次测量信息进行对比,并且需要把对比的数据截成图片可以发给用户(需要在不打开网页的情况下实时对网页进行截图然后保存到服务器上,返回图片地址),通过网上 ...

  6. html转图片网页截屏(二)PhantomJS

    关于PhantomJS PhantomJS 是一个基于WebKit的服务器端 JavaScript API.它全面支持web而不需浏览器支持,其快速,原生支持各种Web标准: DOM 处理, CSS ...

  7. Python 实现网页截屏、查库、发邮件

    本文介绍了使用 Python(2.7版本)实现网页截屏.查库.发邮件的 demo.用到了 selenium.phantomjs.mailer.jinja2.mysqldb 还有 image,都是比较典 ...

  8. Javascript网页截屏的方法

    最近我在研究开发一个火狐插件,具体的功能是将网页内容截屏并分享到微博上.目前基本功能已经实现,大家可以在 @程序师视野 里看到用这个截图插件分享的微博的效果. 之前我曾写过如何将canvas图形转换成 ...

  9. JAVA之网页截屏

    先吐槽一下下: 表示接近两个月没有敲代码了,现在看一下代码都感觉有点生了.三天打鱼两天晒网是不行的,再说我本来就有“健忘症”,真的是木有办法啊 ̄へ ̄.我一直信奉一句话:“勤能补拙”,它也是我学习路上的 ...

随机推荐

  1. Docker PHP 例子

    版权所有,未经许可,禁止转载 章节 Docker 介绍 Docker 和虚拟机的区别 Docker 安装 Docker Hub Docker 镜像(image) Docker 容器(container ...

  2. python---函数作用域

    1.作用域 local:局部作用域 E(Enclosing):闭包函数外的函数中     G(global): 全局作用域 B(Build-in):內建作用域 查找变量的顺序,从上到下 2.函数内的变 ...

  3. JAVAEE 和项目开发(第三课:HTTP的请求头和请求方式)

    HTTP 协议之请求格式   请求格式的结构:请求行:请求方式.请求的地址和 HTTP 协议版本 请求头:消息报头,一般用来说明客户端要使用的一些附加信息 空行: 位于请求行和请求数据之间,空行是必须 ...

  4. 51Nod1085 0-1背包(一维和二维数组实现)

    背包是典型的动态规划问题,关于背包问题的详解,推荐博客:点击打开链接(这篇博客有点错误,代码for循环里错了,不过讲解 的很详细) 题目如下: 在N件物品取出若干件放在容量为W的背包里,每件物品的体积 ...

  5. Golang---sort包

    Sort 包介绍 Go 语言标准库 sort 包中实现了几种基本的排序算法:插入排序.快速排序和堆排序,但是在使用 sort 包进行排序时无需具体考虑使用哪种排序方式,因为该方法会根据传入的排序的数据 ...

  6. redis主从复制原理与优化-高可用

    一 什么是主从复制 机器故障:容量瓶颈:QPS瓶颈 一主一从,一主多从 做读写分离 做数据副本 扩展数据性能 一个maskter可以有多个slave 一个slave只能有一个master 数据流向是单 ...

  7. Integer和int的区别

    1.Integer是int的包装类,int则是java的一种基本数据类型 2.Integer变量必须实例化后才能使用,而int变量不需要 3.Integer实际是对象的引用,当new一个Integer ...

  8. 专为前端开发者准备的15款优秀的Sublime Text插件

    Sublime Text 已成为了目前最流行的代码编辑器之一.它的反应速度.简单易用性以及丰富的插件生态,让众多前端开发者们为之倾倒. 为了帮助开发者们更便捷地使用 Sublime Text ,我们决 ...

  9. SQL基础教程(第2版)第7章 集合运算:练习题

    可能有些读者会对此感到惊讶:“同时使用 UNION 和 INTERSECT 时,不是 INTERSECT 会优先执行吗?”当然,从执行顺序上来说确实是从 INTERSECT 开始的, 但是在此之前,由 ...

  10. keras_yolo3程序框架理解