学习PhantomJS笔记
来源:互联网 发布:淘宝卖家如何改差评 编辑:程序博客网 时间:2024/05/22 06:49
由于需要利用phantomJS模拟浏览器执行JS,在采集页面,学习phantomJS,边学习边做一下笔记,留作以后查看。
1.下载phantomJS
下载链接:http://phantomjs.org/download.html
可以下载不同的版本,这里下载Windows版本:phantomjs-2.1.1-windows
2.解压
3.参考官网的QuickStart学习
下面的例子也可以直接用examples下的js文件
新建一个文件夹,命名test,
第一个例子:下面新建一个文件,命名为hello.js,内容包含下面两行
console.log('Hello, world!');phantom.exit();
然后在命令行执行输出了 Hello,world!
官网解释:第一行console.log('Hello, world!');是打印功能,类似System.out
第二行是调用phantomJS.exit(),这一步是必须的且重要的,否则phantomJS不会终止。
第二个例子:页面加载
通过创建一个webpage对象,可以对页面加载、分析、渲染
下面学习加载百度首页,并且保存在一个图片
新建baiduload.js文件,包含以下内容
var page = require('webpage').create();
page.open('http://baidu.com.cn', function(status) {
console.log("Status: " + status);
if(status === "success") {
page.render('../test/baidu.png');
}
phantom.exit();
});
在命令行中执行:
在test路径下可以看到,说明上述js执行成功了,继续
由于phantomJS的render功能,phantomJS可以进行网页捕获,类似截图
新建一个loadspeed.js内容包含:
var page = require('webpage').create(), system = require('system'), t, address;if (system.args.length === 1) { console.log('Usage: loadspeed.js <some URL>'); phantom.exit();}t = Date.now();address = system.args[1];page.open(address, function(status) { if (status !== 'success') { console.log('FAIL to load the address'); } else { t = Date.now() - t; console.log('Loading ' + system.args[1]); console.log('Loading time ' + t + ' msec'); } phantom.exit();});
在命令行执行:如果不传任何参数(默认长度是1,具体参数的情况可以参考http://blog.csdn.net/xm_zhou/article/details/38278595)传入一个url参数:
第三个例子:
新建一个displaytitle.js文件,内容包含:
var page = require('webpage').create();
var url = "http://phantomjs.org/quick-start.html";page.open(url, function(status) { var title = page.evaluate(function() { return document.title; }); console.log('Page title is ' + title); phantom.exit();});
在命令行执行:打印出页面的title了
从webpage包括内部的代码,例如evaluate()默认是不显示打印信息的,如果要想显示,需要回调onConsoleMessage,
上面的例子就改为:
var page = require('webpage').create();
page.onConsoleMessage = function(msg) {
console.log('Page title is ' + msg);
};
var url = "http://phantomjs.org/quick-start.html";
page.open(url, function(status) {
page.evaluate(function() {
console.log(document.title+"----------------");
});
phantom.exit();
});
网页请求和响应
在命令行中执行 netlog.js
后面再继续学习如何模拟登录,模拟点击
- phantomjs学习笔记
- 学习PhantomJS笔记
- phantomjs入门学习笔记之一
- phantomjs入门学习笔记之一
- 爬虫学习笔记--Selenium PhantomJS
- PhantomJS笔记
- phantomjs笔记
- <41>python学习笔记——selenium / phantomjs
- [笔记] PhantomJS爬虫小记
- 爬虫学习-phantomjs
- python selenium phantomjs学习
- 记录phantomjs学习(一)
- 记录phantomjs学习(二)
- 记录phantomjs学习(三)
- phantomjs
- phantomjs
- phantomjs
- PhantomJS
- shell数组
- 设计模式深入学习---Prototype原型模式
- RecyclerView之ItemDecoration由浅入
- 锤子手机调试模式
- 几个 Python 语法糖的实现
- 学习PhantomJS笔记
- Spring boot 完美解决ajax跨域请求问题
- 深切悼念陈省身先生,孟道骥[2004-12-7]
- 2015输入一个字符串以#结尾,则输出此字符串中连续出现最长的数字串及其开始的下标;
- rev Codeforces Round #392 (Div. 2) 758E - Broken Tree
- MyEclipse用JDBC连接PostgreSQL
- [Machine Learning & Algorithm] 随机森林(Random Forest)
- linux-tail命令
- OpenCV 读取、修改、保存图像