PhantomJs 与 Casperjs
利用PhantomJS做网页截图经济适用,但其API较少,做其他功能就比较吃力了。
CasperJs是对phantomjs的一次封装。即phantomjs是原生的,而casperjs是封装在以phantomjs基础上的玩意。
用CasperJS浏览页面比用PhantomJS更加方便和直观。
相关传送门:
# 官网
http://casperjs.org/ # github
https://github.com/casperjs/casperjs # 快速入门
http://docs.casperjs.org/en/latest/quickstart.html # API文档
http://docs.casperjs.org/en/latest/modules/index.html # Event事件API文档
http://docs.casperjs.org/en/latest/events-filters.html#events-reference
# 利用phantomjs+casperjs实现登陆抓取网页并截图
http://blog.csdn.net/longhaoyou/article/details/43524977 # 入门练习demo
http://blog.csdn.net/kiwi_coder/article/details/36248353 # 利用nodejs+phantomjs+casperjs采集淘宝商品的价格
http://www.cnblogs.com/xinzhyu/p/4214669.html # 萌萌CasperJS第1篇 1分钟写完爬虫 拿亚马逊商品数据
http://blog.csdn.net/sagomilk/article/details/20800543
# 解决乱码问题:
phantom.outputEncoding = "gbk";
# 利用open / AJAX发送HTTP请求
http://docs.casperjs.org/en/latest/modules/casper.html#open http://docs.casperjs.org/en/latest/modules/clientutils.html#sendajax
# 监听页面的错误
phantom.outputEncoding = "gbk";
var casper = require('casper').create({
viewportSize: {width: , height: },
waitTimeout:
}); // 需要先申明,然后再start
casper.on('page.error', function (err) {
this.echo(err)
}) casper.start('http://localhost:8081/#/home', function () {
this.echo('Casper Starting');
}) casper.run();
# 快速判断元素是否存在
var casper = require('casper').create();
casper.start('http://domain.tld/page.html', function() {
if (this.exists('h1.page-title')) {
this.echo('the heading exists');
}
});
casper.run();
# 建议对click之后的验证加入wait操作。这样可以有更好的保证. 并且建议尽可能使用thenClick。除非点击的元素要在指定的区域
// houseBusinessDetails
this.thenClick('.listviewItem:nth-child(1) .busitem').wait(, function () {
this.echo(this.getCurrentUrl());
this.capture('capture/houseBusinessDetails.png')
})
# 可以用thenOpen进行跳转界面
// carBusiness
this.thenOpen('http://localhost:8081/#/carBusiness').waitForSelector('.listviewItem').wait(, function () {
this.echo(this.getCurrentUrl());
this.capture('capture/carBusiness.png')
})
个人练手笔记
phantom.outputEncoding = "gbk";
var casper = require('casper').create({
viewportSize: {width: 414, height: 736},
waitTimeout:30000,
}); const u = function () {
casper.echo("当前正在操作的URL为:" + casper.getCurrentUrl())
} // 需要先申明,然后再start
casper.on('page.error', function (err) {
this.echo("出现了error等级的错误信息------- " + err, 1);
}) casper.start('http://localhost:8081/', function () {
// Home
this.waitForSelector("#app .centers-sec", function () {
u()
this.capture('capture/home.png')
}) // houseBusiness
this.thenClick('.module:nth-child(1)').wait(1500, function () {
u()
this.capture('capture/houseBusiness.png')
}) // houseBusinessDetails
this.thenClick('.listviewItem:nth-child(1) .busitem').wait(1500, function () {
u()
this.capture('capture/houseBusinessDetails.png')
}) // carBusiness
this.thenOpen('http://localhost:8081/#/carBusiness').waitForSelector('.listviewItem').wait(1500, function () {
u()
this.capture('capture/carBusiness.png')
}) // CarBusinessDetails
this.thenClick('.listviewItem:nth-child(1) .busitem').wait(1500, function () {
u()
this.capture('capture/CarBusinessDetails.png')
}) // lentOutDetail
this.then(function () {
if (this.exists('#header .right-btn a')) {
this.thenClick('#header .right-btn a').wait(1500, function () {
u()
this.capture('capture/lentOutDetail.png')
})
}
}) // myBusiness
this.thenOpen('http://localhost:8081/#/myBusiness').wait(1500, function () {
u()
this.capture('capture/myBusiness0.png')
}).thenClick(".mint-tab-item:nth-child(2)").wait(2500, function () {
u()
this.capture('capture/myBusiness1.png')
}).thenClick(".mint-tab-item:nth-child(3)").wait(1000, function () {
u()
this.capture('capture/myBusiness2.png')
}) // userInfo
this.thenOpen('http://localhost:8081/#/user/userInfo').wait(1500, function () {
u()
this.capture('capture/userInfo.png')
}) // qrcode
this.thenOpen('http://localhost:8081/#/qrcode').wait(1500, function () {
u()
this.capture('capture/qrcode.png')
}) // allLedger
this.thenOpen('http://localhost:8081/#/allLedger').wait(3500, function () {
u()
this.capture('capture/allLedger.png')
}) // AutoRepay
this.thenOpen('http://localhost:8081/#/AutoRepay').wait(3500, function () {
u()
this.capture('capture/AutoRepay.png')
}) // auditAssign
this.thenOpen('http://localhost:8081/#/auditAssign').wait(2500, function () {
u()
this.capture('capture/auditAssign.png')
})
}) casper.run();
PhantomJs 与 Casperjs的更多相关文章
- [Python爬虫] 在Windows下安装PhantomJS和CasperJS及入门介绍(上)
最近在使用Python爬取网页内容时,总是遇到JS临时加载.动态获取网页信息的困难.例如爬取CSDN下载资源评论.搜狐图片中的“原图”等,此时尝试学习Phantomjs和CasperJS来解决这个问题 ...
- PhantomJS、CasperJS安装配置图文详解
目前网站主流的加载方式: 一种是同步加载:另一种是异步加载,也即我们常说的用ajax.对于同步加载的网站,普通的爬虫程序轻松就能搞定.但是对于那种异步请求数据的网站,通常使用selenium+Phan ...
- PhantomJS与CasperJS在Windows下的安装与使用
按照网上的教程来呢,一定是不好使的,这是常理. 所以必须要告诉你怎么使用Phantomjs…… 这么用! 1.下载Phantomjs的压缩包并解压缩: 2.在bin目录(包含phantomjs.exe ...
- 前端端对端测试:基于PhantomJS的CasperJS
简介 Casperjs是一个基于PhantomJS和SlimerJS的前端端对端测试框架,当然你也可以使用它完成网络爬虫功能,它的特点的通过简单的脚本模拟浏览器行为, 主要有casper.tester ...
- 浏览器自动化测试初探 - 使用phantomjs与casperjs
收录待用,修改转载已取得腾讯云授权 作者:yangchunwen 首先要解释一下为什么叫浏览器自动化测试,因为本文只关注发布后页面功能的自动化测试,也就是UI层面的自动化. 浏览器测试有别于js代码的 ...
- [转] 浏览器自动化测试初探:使用 phantomjs 与 casperjs
[From] https://www.qcloud.com/community/article/641602001489391648 作者:yangchunwen 首先要解释一下为什么叫浏览器自动化测 ...
- Phantomjs和Casperjs,后台网页抓取和交互
var casper = require('casper').create({ verbose: true, logLevel: 'debug', pageSettings: { loadImages ...
- windows下面安装casperjs
因为需要 就学习了一下casperjs,CasperJS是一个开源的导航脚本处理和测试工具,基于PhantomJS(前端自动化测试工具)编写.由于casperjs对PhantomJS的依赖性,所以需要 ...
- [Python爬虫] Selenium+Phantomjs动态获取CSDN下载资源信息和评论
前面几篇文章介绍了Selenium.PhantomJS的基础知识及安装过程,这篇文章是一篇应用.通过Selenium调用Phantomjs获取CSDN下载资源的信息,最重要的是动态获取资源的评论,它是 ...
随机推荐
- Python 入门之 模块
Python 入门之 模块 1.模块 (1)模块是什么? 将一些常用的功能封装到一个文件中,那么这个存储着很多常用的功能的py文件,就是模块. 模块就是文件,存放一堆常用的函数.模块,就是一些常用 ...
- html5酷炫效果链接收集
HTML5 3D图片相册图片轮播动画 http://www.html5tricks.com/demo/html5-3d-gallery-animation/index.html 36种漂亮的CSS ...
- xss过滤与单例模式(对象的实例永远用一个)
kindeditor里面可以加入script代码,使用re可以过滤掉python有个专门的模块可以处理这种情况,beautifulsoup4 调用代码: content = XSSFilter().p ...
- css隐藏滚动条 兼容谷歌、火狐、IE等各个浏览器
项目中,页面效果需要展示一个页面的移动端效果,使用的是一个苹果手机样式背景图,咋也没用过苹果,咋也不敢形容. 如下图所示: 在谷歌浏览器如图一滚动条顺利隐藏,但是火狐就如图二了,有了滚动条丑的一批. ...
- 搬家至csdn
搬家至csdn https://blog.csdn.net/qq_42866164
- R语言multiplot函数绘制多张图像
必备数据包“Rmisc” 先准备好需要绘入的图像,以比如p1.p2表示, multiplot(p1, p2) 如果插入图像多,p1.p2.p3.p4,则需要规定图像排列顺序. multiplot(p1 ...
- 005-(已测试成功的方案)kickstart模式实现批量安装centos7.x系统
1.1 安装系统的方法 l 光盘(ISO文件,光盘的镜像文件)===>>每一台物理机都得给一个光驱,如果用外置光驱的话,是不是每台机器都需要插一下 l U盘:ISO镜像刻录到U盘==& ...
- 10年前文章_iscsi initiator 设置
发现和查找 target, iscsiadm -m discovery -t sendtargets -p 192.168.1.1:3260 登录 iscsiadmin -m node -l 退出登录 ...
- uoj207 共价大爷游长沙 子树信息 LCT + 随机化 + 路径覆盖
题目传送门 http://uoj.ac/problem/207 题解 如果是一棵静态的树,有一个非常容易想到的算法:统计一下目前的每一个条边被几条路径经过,如果 \(x\) 到 \(y\) 的边的这个 ...
- 模型监控指标- 混淆矩阵、ROC曲线,AUC值,KS曲线以及KS值、PSI值,Lift图,Gain图,KT值,迁移矩阵
1. 混淆矩阵 确定截断点后,评价学习器性能 假设训练之初以及预测后,一个样本是正例还是反例是已经确定的,这个时候,样本应该有两个类别值,一个是真实的0/1,一个是预测的0/1 TP(实际为正预测为正 ...