phantomJs原理

引用文段:
链接:https://www.jianshu.com/p/0254391918f7

网页渲染可分为服务端渲染和客户端渲染,前者是指你在浏览器地址栏输入一个网址,Web服务器处理请求过程就将所有需要呈现的html元素都构造好了,浏览器收到响应就直接render出页面,客户端工作量少;后者是指Web服务器仅仅将必要的信息作为响应传到浏览器,浏览器需要根据响应进行二次处理,比如ajax请求,再根据ajax请求的结果构造html。

urllib不具备js执行能力,自然不能模拟浏览器执行js请求ajax等效果,于是,所谓无头浏览器phontmJs就出现了,借助这个工具可以模拟webkit执行,还可以包含更多js库比如jQuery等对页面的js执行进行扩展


 
 
第一个phantomjs程序:
在E盘下建立文档,m.js
var page = require('webpage').create();
phantom.outputEncoding="gbk"; #设定字符集类型
page.open('http://music.163.com/', function(status) {
  console.log("Status: " + status);
  if(status === "success") {
    console.log(page.content);#打印phantomJS处理后的页面内容
  }
  phantom.exit();
});

 

然后在E盘下(m.js所在目录)打开cmd,执行

phantomjs m.js

 

会打印出网易音乐的页面内容:

 

也可以将请求页面截图保存:

var page = require('webpage').create();
page.open('http://music.163.com/', function(status) {
  console.log("Status: " + status);
  if(status === "success") {
    page.render('music.png');
  }
  phantom.exit();
});

文件会被保存在m.js所在目录下

 

 

 

 

 

 

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

posted on 2019-01-15 17:11  蛋挞王子  阅读(357)  评论(0编辑  收藏  举报

导航