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. 每天一点点之 taro 框架开发 - 事件处理与样式表

    1.方法调用 state = { name:'张三' } test(){ this.state.name } <button onClick={ this.test.bind(this) } / ...

  2. Java进阶之路 - 1.走近Java

    Java进阶之路 - 1.走近Java 一.走近Java思维导图

  3. tyvj 1860 后缀数组

    真·模板题(然而还是TLE了,tyvj真是个毒瘤,输出double什么的就是 -0.00000000,这些就TLE2333) 简单的说一下本蒟蒻看了一天后缀数组的收获(这东西太神了,,,wcwc,,收 ...

  4. Sqlserver 增删改查----增

    注意我说的常见查询,可不是简单到一个表得增删改查,做过实际开发得人都知道,在实际开发中,真正牵扯到一个表得增删改查只能说占很小得一部分,大多都是好几个表的关联操作的. 下面我就说一下我在实际开发中经常 ...

  5. XXE--XML外部实体注入漏洞

    XXE漏洞原理 XXE漏洞全称XML External Entity Injection 即xml外部实体注入漏洞,XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致可加载恶意外部 ...

  6. JavaWeb之监听器

    1. 介绍         监听器是一个专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监视的对象发生情况时,立即采取相应的行动.监听器其实就是一个实现特定接口的普通java程 ...

  7. 使用html画爱心

    <!DOCTYPE html"> <html> <head> <meta http-equiv="Content-Type" c ...

  8. nginx log 切割

    /logs/nginx/*/*access.log { daily rotate 30 missingok dateext #compress notifempty sharedscripts pos ...

  9. Python Learning Day1

    字符串的操作 # 字符串的操作 str1 = 'my name is xxx, my age is 18.' # 优先掌握的操作: # 1.按索引取值(正向取+反向取) :只能取 print(str1 ...

  10. eclipse导入tomcat源码

    我的开发环境:windows7  64位 一.官网下载tomcat源码.在此奉上一站地址:http://archive.apache.org/dist/tomcat/: 二.编译源码生成.jar文件: ...