Puppeteer
是一個 Node
庫,它提供了一個高級API來控制DevTools協議上的Chrome或Chromium。 Puppeteer默認運行無頭,但能夠配置爲運行完整(非無頭)Chrome或Chromiumlinux
能夠在瀏覽器中手動執行的大多數事情均可以使用 Puppeteer
完成!如下是一些能夠入門的示例:git
SSR
服務端渲染)JavaScript
和瀏覽器功能直接在最新版本的Chrome中運行測試本地 MacOS :github
yarn add puppeteer
複製代碼
down不下來就試試換源,推薦 nrm
工具chrome
yarn global add nrm
複製代碼
nrm use taobao
複製代碼
Centos 7 : 須要安裝如下依賴,確保任務能夠正常執行,相關字體依賴是解決截圖後中文亂碼問題的。(更多運行上的問題也能夠查看此連接)docker
yum install pango.x86_64 libXcomposite.x86_64 libXcursor.x86_64 libXdamage.x86_64 libXext.x86_64 libXi.x86_64 libXtst.x86_64 cups-libs.x86_64 libXScrnSaver.x86_64 libXrandr.x86_64 GConf2.x86_64 alsa-lib.x86_64 atk.x86_64 gtk3.x86_64 ipa-gothic-fonts xorg-x11-fonts-100dpi xorg-x11-fonts-75dpi xorg-x11-utils xorg-x11-fonts-cyrillic xorg-x11-fonts-Type1 xorg-x11-fonts-misc
複製代碼
再設置npm
const browser = await puppeteer.launch({
args: [ '--no-sandbox', '--disable-setuid-sandbox' ]
})
複製代碼
Docker :瀏覽器
官方推薦使用 args參數:--disable-dev-shm-usage 默認狀況下,Docker運行一個/dev/shm共享內存空間爲64MB 的容器。這一般對Chrome來講過小,而且會致使Chrome在渲染大頁面時崩潰。要修復,必須運行容器 docker run --shm-size=1gb 以增長/dev/shm的容量。從Chrome 65開始,使用--disable-dev-shm-usage標誌啓動瀏覽器便可,這將會寫入共享內存文件/tmp而不是/dev/shmbash
注⚠️: 在某些狀況下(尤爲在Docker中)很難正確終止Chrome。若是你遇到不少殭屍Chrome進程,那麼 dumb-init 值得一試。對於PID = 1的進程有特殊處理,less
最後 若是仍是down不下來puppeteer,那麼請戳這裏下載Chromium,放入對應的環境或者項目裏。 再設置 .npmrc
跳過下載 Chromium工具
puppeteer_skip_chromium_download = true
複製代碼
再啓動瀏覽器
const options = {
headless: true,
timeout: 0,
args: [ '--no-sandbox', '--disable-setuid-sandbox' ],
ignoreHTTPSErrors: true
};
const platform = os.platform().toLocaleLowerCase();
// 你所存放的路徑
if (platform === 'linux') {
options.executablePath = path.join(__dirname, '../../../chrome-linux/chrome');
}
const browser = await puppeteer.launch(options);
複製代碼
Have fun !