学习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

后面再继续学习如何模拟登录,模拟点击

0 0