引用文段:
连接:https://www.jianshu.com/p/0254391918f7javascript
网页渲染可分为服务端渲染和客户端渲染,前者是指你在浏览器地址栏输入一个网址,Web服务器处理请求过程就将全部须要呈现的html元素都构造好了,浏览器收到响应就直接render出页面,客户端工做量少;后者是指Web服务器仅仅将必要的信息做为响应传到浏览器,浏览器须要根据响应进行二次处理,好比ajax请求,再根据ajax请求的结果构造html。html
urllib不具有js执行能力,天然不能模拟浏览器执行js请求ajax等效果,因而,所谓无头浏览器phontmJs就出现了,借助这个工具能够模拟webkit执行,还能够包含更多js库好比jQuery等对页面的js执行进行扩展java
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,执行web
phantomjs m.js
会打印出网易音乐的页面内容:ajax
也能够将请求页面截图保存:浏览器
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所在目录下服务器