利用phantomjs+casperjs实现登陆抓取网页并截图

原:点击打开链接

发表于2年前(2013-07-30 16:31)   阅读( 3384) | 评论( 0)  19人收藏此文章, 我要收藏
4

听云性能监测产品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操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值