casperjs爬虫

1、casperjs简介

casperjs是一个基于PhantomJs的导航脚本和测试工具,它能够完成西面的常见任务。javascript

  • 定义 & 排序浏览器导航步骤html

  • 填充 & 提交表单java

  • 点击 & 跟踪连接node

  • 捕获网页截图 (还能够截取某一区域)python

  • 在远程DOM上进行断言测试npm

  • 记录事件windows

  • 下载资源,包括二进制文件浏览器

  • 编写功能测试套件,结果保存为JUnit XML文件框架

  • 抓取网页内容异步

2、依赖环境安装

安装phantomjs
$ npm install -g phantomjs

安装 Python,若是是windows注意环境变量配置

安装casperjs
$ npm install -g casperjs

确认是否安装成功

$ phantomjs --version
$ python --version
$ casperjs --version

3、怎么用

代码框架

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();

4、总结

  • casperjs优势是能够模仿用户行为,能够爬去异步加载的数据

  • 编写casperjs很相似写javascript可是不同的

  • 上面的学习只能够完成简单的爬虫,还有验证码和数据保存须要解决

  • casperjs的功能和选择器是很是强大的,你们能够看一下 API

下一篇文章会写用node,Tesseract来解决上面说到的问题

相关文章
相关标签/搜索