一:什麼是Splashcss
Splash是一個 JavaScript渲染服務,是一個帶有 HTTPAPI 的輕量級瀏覽器html
1 功能介紹json
利用 Splash,咱們能夠實現以下功能:瀏覽器
口異步方式處理多個網頁渲染過程;cookie
口 獲取渲染後的頁面的源代碼或截圖; 異步
口 經過關閉圖片渲染或者使用 Adblock規則來加快頁面渲染速度; post
口 可執行特定的 JavaScript腳本; url
口可經過 Lua 腳原本控制頁面渲染過程; spa
口 獲取渲染的詳細過程並經過 HAR ( HTTP Archive )格式呈現。 插件
2:安裝教程(不作介紹,小夥伴可自行百度,教程不少)
3:Splash使用到的方法:
go()--------------go()方法去加載頁,且它能夠模擬 GET 和 POST請求,同時支持傳入請求頭,表單等數據
wait()------------wait()方法能夠控制頁面的等待時間
evaljs()----------evaljs()方法傳入JavaScript腳本並返回最後一條 JavaScript語句的返回結果
wait()----------- wait()方法相似於 Python 中的 sleep(),其參數爲等待的秒數。
jsfunc() ------------能夠直接調用 JavaScript 定義的方法,可是所調用的方法須要用雙中括號包圍,這至關於 實現了 JavaScript方法到 Lua腳本的轉換
runjs()------------runjs()方法能夠執行 JavaScript 代碼,它與 evaljs()的功能相似,可是更偏向於執行某些動做或聲 明 某些方法
autoload() ------ autoload() 方法能夠設置每一個頁面訪問時自動加載的對象
call_later()--------方法能夠經過設置定時任務和延遲時間來實現任務延時執行,井且能夠在執行前經過 cancel() 方法 從新執行定時任務
http_get() --------此方法能夠模擬發送 HTTP 的 GET請求
http _post()-----http_get()方法相似,此方法用來模擬發送 POST請求,不過多了一個參數 body
set_content() ------此方法用來設置頁面的內容
html() ----------此方法用來獲取網頁的源代碼
png() ------------此方法用來獲取 PNG 格式的網頁截圖
jpeg() -----------此方法用來獲取 JPEG 格式的網頁截圖
har() ------------此方法用來獲取頁面加載過程描述
url() ------------此方法能夠獲取當前正在訪問的 URL
get_cookies() -----此方法能夠獲取當前頁面的 Cookies
add_cookie() -----此方法能夠爲當前頁面添加 Cookie
clear_ cookies() ---此方法能夠清除全部的 Cookies
get_viewport_size() ---此方法能夠獲取當前瀏覽器頁面的大小,即寬高
set_viewport_full() ---此方法能夠設置瀏覽器全屏顯示
set_user_agent() ----此方法能夠設置瀏覽器的 User-Agent
set_custom_headers() ---此方法能夠設置請求頭
select() -------該方法能夠選中符合條件的第一個節點,若是有多個節點符合條件, 則只會返回一個,其參數是 css 選擇器
select_all() ------此方法能夠選中全部符合條件的節點,其參數是 css 選擇器
mouse_click() ------此方法能夠模擬鼠標點擊操做,傳入的參數爲座標值 x 和 y。 此外,也能夠直接選中某個節點, 而後調用此方法
4:Splash 對象屬性
function main(splash, args) local url = args.url end
• splash
main()方法的第一個參數是 splash ,這個對象很是重要,它相似於 Selenium 中的 WebDriver 對象,咱們能夠調用它的一些屬性和方法來控制加載過程
• args
該屬性能夠獲取加載時配置的參數
• js_enabled
這個屬性是 Splash的JavaScript執行開關,能夠將其配置爲true或false來控制是否執行JavaScript 代碼,默認爲 true
• resource_timeout
此屬性能夠設置加載的超時時間,單位是秒。 若是設置爲 0 或 nil (相似 Python 中的 None ),代 表不檢測超時
• images_ enabled
此屬性能夠設置圖片是否加載,默認狀況下是加載的
• plugins _enabled
此屬性能夠控制瀏覽器插件(如 Flash 插件)是否開啓 。 默認狀況下,此屬性是 false,表示不開 啓
• scroll_position
經過設置此屬性,咱們能夠控制頁面上下或左右滾動。 這是一個比較經常使用的屬性
二:Splash API 調用
• render.html
此接口用於獲取 JavaScript渲染的頁面的 HTML 代碼,接口地址就是 Splash 的運行地址加此接口 名稱,
• render.pug
此接口能夠獲取網頁截圖,其參數比 render.html 多了幾個,好比經過 width 和 height 來控制寬高, 它返回的是 PNG 格式的圖片二進制數據
render.jpeg
此接口和 render.pug相似,不過它返回的是 JPEG 格式的圖片二進制數據。
另外, 此接口比 render.png 多了參數 quality,它用來設置罔片質量。
render.bar
此接口用於獲取頁面加載的 HAR數據,它的運回結果很是多,是一個 JSON 格式的數據,其中包含頁面加載過程巾的 HAR數據。
render.json
此接口包含了前面接口的全部功能,返回結果是 JSON 格式
• execute
此接口才是最爲強大的接口 。 前面說了不少 Splash Lua腳本的操做,用此接口即可實現與 Lua腳 本的對接。
若是要實現 一些交互操做的話,這裏就須要使用 execute 接口了。