一、casperjs简介
casperjs是一个基于PhantomJs的导航脚本和测试工具,它可以完成西面的常见任务。
定义 & 排序浏览器导航步骤
填充 & 提交表单
点击 & 跟踪链接
捕获网页截图 (还可以截取某一区域)
在远程DOM上进行断言测试
记录事件
下载资源,包括二进制文件
编写功能测试套件,结果保存为JUnit XML文件
抓取网页内容
二、依赖环境安装
安装phantomjs$ npm install -g phantomjs
安装 Python,如果是windows注意环境变量配置
安装casperjs$ npm install -g casperjs
确认是否安装成功
$ phantomjs --version
$ python --version
$ casperjs --version
三、怎么用
代码框架
var casper = require('casper').create(); //新建一个页面
casper.start(url1); //添加第一个URL
casper.thenOpen(url2); //添加第二个URL,依次类推
casper.run(); //开始导航
表单填充
casper.start('url', function() { //打开页面,并指定一个回调函数
this.fill('form[id="login-form"]', { //定位到一个form中
'username': 'chuck', //给name为username的表单控件填充值'chuck'
'password': 'n0rr1s' //给name为password的表单控件填充值'n0rr1s'
}, true); //参数true,表示填充完毕后,立刻提交表单
this.thenClick("#id", function() {//如果不自动提交,可以使用点击事件,
//成功回调函数
})
});
网页截图
casper.start('url', function() {
this.captureSelector('capture.png', '#id');
//给页面中'#id'选择器匹配的元素截图,输出图片文件名为cpature.png,目录为当前目录
});
异步操作
casper.start('https://twitter.com/casperjs_org', function() {
this.waitForSelector('#id', function() { //等到'#id'选择器匹配的元素出现时再执行回调函数
}, function() {
this.die('失败').exit();//失败时调用的函数,输出一个消息,并退出
}, 2000); //超时时间,两秒钟后指定的选择器还没出现,就算失败
});
简单的示例
var casper = require('casper').create();
casper.start('http://www.baidu.com/', function() {
this.echo(this.getTitle());// 获取网页title
});
casper.then(function() {
this.captureSelector('baidu-homepage.png', 'html'); // 生成一个png图片
});
casper.run();
四、总结
casperjs优点是可以模仿用户行为,可以爬去异步加载的数据
编写casperjs很类似写javascript但是不一样的
上面的学习只可以完成简单的爬虫,还有验证码和数据保存需要解决
casperjs的功能和选择器是非常强大的,大家可以看一下 API
下一篇文章会写用node,Tesseract来解决上面说到的问题
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。