phantomJs原理

引用文段:
連接:https://www.jianshu.com/p/0254391918f7javascript

網頁渲染可分爲服務端渲染和客戶端渲染,前者是指你在瀏覽器地址欄輸入一個網址,Web服務器處理請求過程就將全部須要呈現的html元素都構造好了,瀏覽器收到響應就直接render出頁面,客戶端工做量少;後者是指Web服務器僅僅將必要的信息做爲響應傳到瀏覽器,瀏覽器須要根據響應進行二次處理,好比ajax請求,再根據ajax請求的結果構造html。html

urllib不具有js執行能力,天然不能模擬瀏覽器執行js請求ajax等效果,因而,所謂無頭瀏覽器phontmJs就出現了,藉助這個工具能夠模擬webkit執行,還能夠包含更多js庫好比jQuery等對頁面的js執行進行擴展java


 
 
第一個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,執行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所在目錄下服務器

相關文章
相關標籤/搜索