引用文段:
链接: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所在目录下