听云性能监测产品App、Server、CDN免费试用,绑定账号送京东卡
最近有个任务要求定时自动登陆某网站,访问指定页面并且进行截图.windows ,linux实现均可.
开始想利用php 调用com组件来完成.截图是OK的,但是涉及到登陆就没法实现了.
后来网上查了下资料发现用phantomjs + casperj可以完美实现
phantomjs-1.9.1-windows.zip phantomjs windows下载
casperjs 1.1-beta1 casperjs 下载
下载完 phantomjs和casperjs 后解压到任意目录即可. 然后修改 casperjs目录下 batchbin\casperjs.bat文件的内容
call phantomjs 改成 call phantomjs的路径(例如:E:/phantomjs)
任意目录下新建js 文件 例如: E:/test.js
插入代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
var
casper = require(
'casper'
).create();
casper.start(
'https://passport.baidu.com/v2/?login'
,
function
() {
this
.fill(
'div[id="loginForm"]'
, {
'userName'
:
'whcyc2002'
,
'password'
:
'*******'
},
false
);
});
casper.then(
function
() {
this
.click(
'input[class="pass-button pass-button-submit"]'
);
this
.echo(
'login...'
);
});
casper.then(
function
() {
this
.wait(3000,
function
() {
this
.capture(
"baidu.png"
);
});
});
casper.run();
|
命令下执行 casperjs路径/batchbin/casperjs.bat E:/test.js
输出 login...
然后目录下会多出一个 baidu.png 的图片 类似这样
也可以通过外部调用的方式 ,例如用php 代码如下
1
|
exec
(
"E:/casperjs/batchbin/casperjs.bat E:/test.js"
,
$out
);
|
通过这种方式就可以很方便的完成网页的截图.甚至是一些需要登陆的网页截图.
phantomjs 和 casperjs 也都有 linux版本. 所以linux下也是可以实现同样的功能的.
简单介绍一下原理
phantomjs 实际上是一个基于服务端的webkit引擎,内置了javascript的api.可以解析并渲染dom.相当于直接使用浏览器访问网址.
casperjs则是基于phantomjs的 js封装.用来实现一些dom操作