三分鐘學會如何在函式計算中使用 puppeteer

2021-09-13 14:53:42 字數 2523 閱讀 8759

摘要: 使用 puppeteer 結合函式計算,可以快速的構建彈性的服務完成各種功能,包括:生成網頁截圖或者 pdf、高階爬蟲,可以爬取大量非同步渲染內容的網頁、模擬鍵盤輸入、表單自動提交、登入網頁等,實現 ui 自動化測試和捕獲站點的時間線,以便追蹤你的**,幫助分析**效能問題

簡介使用 puppeteer 結合函式計算,可以快速的構建彈性的服務完成各種功能,包括:

生成網頁截圖或者 pdf

高階爬蟲,可以爬取大量非同步渲染內容的網頁

模擬鍵盤輸入、表單自動提交、登入網頁等,實現 ui 自動化測試

捕獲站點的時間線,以便追蹤你的**,幫助分析**效能問題

接下來,將基於乙個腳手架專案開發我們自己 puppeteer 專案。

>>> git clone -o starter-kit  your_project_name
專案結構

├── lib                         chrome headless 依賴的共享庫,打包的時候,拷貝到打包專案的根目錄下

├── chrome

│ ├── buildchrome.sh 編譯 chrome headless shell 指令碼,基於它,可以編譯最新的版本

│ └── headless_shell.tar.gz 編譯後的 chrome headless 二進位制打包檔案

├── src

│ ├── index.js 函式呼叫入口檔案,函式 handler 為 index.handler,您的業務**寫在這裡

│ └── starter-kit

│ ├── local.js 本地測試操作 chrome headless 的 api 是否正確,通過執行命令:npm run local

├── package.json

└── package.zip 輸出函式計算打包檔案,通過命令:npm run package 或 npm run package-nochrome

如何寫業務**

index.js 檔案

const setup = require('./starter-kit/setup');

exports.handler = async (event, context, callback) => ;

exports.run = async (browser) => ,

});};

編譯打包

包含 chrome headless

執行命令:npm run package 。命令會將 chrome headless 檔案一起打包進專案,放在專案根目錄,函式執行的時候,預設將 chrome headless 安裝到 /tmp 目錄。

chrome_bucket(必填): chrome headless 上傳到 oss 的 bucket

chrome_region(必填): chrome headless 上傳到 oss 的 region

chrome_key(必填): chrome headless 上傳到 oss 的 key。 預設值: headless_shell.tar.gz

部署

編譯打包輸出的檔案:package.zip,通過函式計算控制台或者 fcli 命令工具上傳已打包檔案。fcli 上傳已打包檔案命令:

mkf myfunction -h index.handler -f package.zip -t nodejs8 # **在本地的 package.zip 中

為什麼要使用函式計算

函式計算是乙個相對較新的事物,可能大部分開發人員或架構師對它很陌生。微服務架構是當下很流行的一種系統架構,微服務架構有沒有不夠完美的地方?答案是肯定的。基於微服務架構,我們需要考慮使用什麼微服務框架來架構系統、需要多少臺伺服器、如何有效減輕運維負擔等一些列問題。另外,按照《富比士》雜誌的統計,在商業和企業資料中心的典型伺服器僅提供 5%~15% 的平均最大處理能力的輸出。這無疑是一種資源的巨大浪費。

有沒有辦法解決上面的不足?答案也是肯定的,阿里雲函式計算就是在這樣的背景下應運而生的。如果把雲計算理解成乙個執行環境,那麼,在這個環境裡,函式(即業務邏輯的載體)+ 資料(即跟業務相關的輸入與輸出)就是應用的核心,有了函式、資料、事件這三者,其它任何**和框架,無非是整個應用的膠水和ui罷了。那麼,最理想的情況就是用最少的時間寫膠水,將更多的時間投入到核心應用的開發中,甚至,徹底實現整個軟體棧的微服務化。函式計算就是這裡的膠水。

總結函式計算有如下優勢:

無需採購和管理伺服器等基礎設施

專注業務邏輯的開發

提供日誌查詢、效能監控、報警等功能快速排查故障

以事件驅動的方式觸發應用響應使用者請求

毫秒級別彈性伸縮,快速實現底層擴容以應對峰值壓力

按需付費。只需為實際使用的計算資源付費,適合有明顯波峰波谷的使用者訪問場景

Linux 教你三分鐘學會重定向

在學習了檔案描述符及其分配規則 之後,了解到作業系統總是找到當前files struct的指標陣列中沒有被使用的最小的乙個下標,作為新的檔案描述符。在 的結尾我們發現,檔案可以通過close來關閉,既然可以關閉,那如果我將標準輸出1關閉,再開啟myfile檔案,會出現什麼現象呢?用 驗證一下 在編譯...

三分鐘帶你學會爬蟲

深度學習模型訓練極大的依賴資料,當資料量不夠時,可通過網路爬蟲從網上爬取資料。下面以爬取劉亦菲和劉德華資料為例介紹爬蟲 使用步驟如下 劉亦菲 劉德華import re import requests from urllib import error from bs4 import beautiful...

三分鐘學會使用HTML製作三角形

首先我們了解在html中每乙個元素都是乙個盒子 盒子是由外邊距 邊框 內邊距 內容組成的 而三角形 是由控制盒子邊框構成 如下列 下面展示一些內聯 片。a code block var foo bar an highlighted block var foo bar 得到下列圖形 在這裡我們由於邊框...