【靜態化平臺】☞(一)網頁靜態化服務
一、應用場景
當我們需要對網頁做以下操作時,可以使用本平臺O(∩_∩)O~
1.抓取網頁原始碼,包括網頁js動態渲染之後的內容,100%還原網頁的所見即所得
在抓取的網頁原始碼的時候,遇到ajax非同步渲染到dom節點,這樣讀取網頁原始碼就會缺失這些非同步渲染的資料。傳統做法單獨請求ajax的http請求獲取json資料,但是如果這些json資料在頁面上通過js做了改變,最終呈現到頁面的資料不是你想要的,還是不能解決我們的問題。
2.抓取下拉後載入的資料
在移動端瀏覽網頁或app時候,經常會遇到下拉載入資料。每當網頁的高度到底的時候,會自動觸發ajax載入新資料,拼接到最後如此重複。如果我們需要抓取這種下拉後完整的網頁,傳統做法是傳送許多ajax來請求下拉資料,然後再手動的拼接這些資料還原網頁。這麼做涉及到大量的程式碼邏輯,太慢。。。
3.網頁截圖
批量對網頁內容截圖,生成網頁快照圖片。
4.模擬操作網頁
對第三方網站自動點選,可以完全模擬真實使用者操作。
5.自動採集app資料
自動登陸後,採集app的資料。這裡只是針對h5的app。native的不能自動,需要寫程式碼。
6.線上清洗資料,並將清洗後的資料直接同步MaxCompute。
使用者線上編輯自定義js指令碼,處理抓取到的資料,將處理後的結果同步MaxCompute。可以使用cheerio(和jquery用法基本一致)來獲取dom節點資料。
二、實現原理
1.nodejs資料接入層接受到請求後將資料快取到redis叢集中,redis採用佇列儲存。採用redis快取主要解決單點問題。
2.nodejs定時從redis佇列中拉取資料交給phantomjs程式池處理,每次拉取的數量不超過phantomjs程式池設定的最大快取數目前是500。最多併發啟動18個phantomjs程式(cpu上限),保證phantomjs程式池中始終有任務處於等待狀態,減少建立程式的開銷。
3.phantomjs抓取到的資料放到redis快取一份,1小時有效期。將結果資料傳送使用者提供的callbackUrl地址。
三、介面介紹
1.網頁靜態化api
介面說明:需要靜態化的地址,呼叫此介面可以將對應的url內容靜態化。返回結果通過callback的方式主動呼叫callback地址。(資料快取1小時有效,不必多次靜態化相同的url)
介面地址:GET http://xxx
必須引數 1:fetchUrl (需要靜態化的url , https://g.taobao.com)
必須引數 2:callbackUrl (回撥接收,靜態化過程比較慢,因此採用非同步介面,post方式傳送到callbackUrl)
返回結果:html原始碼
2.網頁截圖api
介面說明:開啟網頁自動截圖,多屏會自動下拉到最底端。
介面地址:GET http://xxx
必須引數 1:fetchUrl (需要截圖的網頁 , https://g.taobao.com)
返回結果:圖片線上地址
3.模擬操作網頁
介面說明:模擬瀏覽器操作,例如自動登入打卡等。。
介面地址:GET http://xxx
必須引數 1:js指令碼
返回結果:操作log
相關文章
- 靜態網站託管服務平臺網站
- 網頁靜態化之freemaker的使用網頁
- 網站靜態化思想網站
- Nginx靜態服務Nginx
- PHP 實現頁面靜態化PHP
- 網頁渲染方式-從靜態頁面到服務端渲染網頁服務端
- 一個簡單靜態網頁網頁
- Laravel頁面靜態化最佳實踐Laravel
- 頁面靜態化技術演進
- 靜態網頁使用Node.js跨域代理服務網頁Node.js跨域
- 網頁開發方式-從靜態頁面到服務端渲染網頁服務端
- [譯] 用 Workers 讓靜態網站動態化網站
- 靜態網頁與動態網頁的區別網頁
- Blazor靜態服務端呈現(靜態SSR)身份認證Blazor服務端
- Nuxtjs實現服務端渲染和靜態化站點UXJS服務端
- echarts map靜態套用網頁Echarts網頁
- Nginx服務系列——靜態資源web服務NginxWeb
- Nginx 部署靜態頁面Nginx
- 靜態頁面是啥
- 靜態域與靜態方法
- [譯] 提高 10 倍效能:優化靜態網站優化網站
- 易優cms網站SEO模組URL配置偽靜態靜態頁面設定網站
- QTcpServer實現web靜態資源服務QTTCPServerWeb
- 靜態
- 靜態照片一鍵動態化,教你如何整合人像復活能力
- 靜態模型一鍵動態化,教你如何整合動作捕捉能力模型
- 用typescript寫靜態頁面TypeScript
- Laravel diary_靜態頁面Laravel
- 偽靜態、靜態和動態的區別
- SpringBoot2 整合FreeMarker模板,完成頁面靜態化處理Spring Boot
- JavaScript 靜態屬性與靜態方法JavaScript
- net 靜態方法與非靜態方法
- Python靜態網頁爬蟲專案實戰Python網頁爬蟲
- python虛擬環境與偽靜態網頁Python網頁
- 網站偽靜態配置網站
- 【雜談】一個簡易的靜態網頁伺服器網頁伺服器
- 靜態頁面佈局例項
- 構建靜態頁面 之 [ 列表 ]
- 構建靜態頁面 之 [ 表格 ]