手動下載 Chrome,解決 puppeteer 無法使用問題

weixin_34208283發表於2018-08-26

原文地址:https://marxjiao.com/2018/08/26/puppeteer-install/

因為網路原因,國內安裝 puppeteer 的時候會報網路超時。這裡使用 puppeteer-core 之後使用手動下載的 Chrome 進行操作。思路很簡單,安裝一個不帶瀏覽器的 puppeteer,再使用的時候將瀏覽器地址指向一個可執行的 Chrome 瀏覽器檔案。

安裝

安裝puppeteer-core

yarn add puppeteer-core

找到 puppeteer 中對應的瀏覽器並下載

node_modules/puppeteer-core/lib/BrowserFetcher.js 中找到各平臺 Chrome 下載地址。其中%s 替換為 DEFAULT_DOWNLOAD_HOST 的值,%d 替換為版本號。

3831128-226c35e238ceaa43.png
下載地址

node_modules/puppeteer-core/packages.json 中找到版本號

3831128-e2e699a56211a1a5.png
版本號

替換後得到下載地址

https://storage.googleapis.com/chromium-browser-snapshots/Mac/579032/chrome-mac.zip

下載後解壓,放在專案目錄中,這裡我放在 chrome 下。

使用

這樣就可以使用了。

使用程式碼

const puppeteer = require('puppeteer-core');
const path = require('path');

(async () => {
    const browser = await puppeteer.launch({
        // 這裡注意路徑指向可執行的瀏覽器。
        // 各平臺路徑可以在 node_modules/puppeteer-core/lib/BrowserFetcher.js 中找到
        // Mac 為 '下載檔案解壓路徑/Chromium.app/Contents/MacOS/Chromium'
        // Linux 為 '下載檔案解壓路徑/chrome'
        // Windows 為 '下載檔案解壓路徑/chrome.exe'
        executablePath: path.resolve('./chrome/Chromium.app/Contents/MacOS/Chromium')
    });
    const page = await browser.newPage();
    await page.setViewport({
        width: 375,
        height: 667,
        deviceScaleFactor: 1,
        isMobile: true
    })
    await page.goto('https://marxjiao.com/');
    await page.screenshot({path: 'marx-blog.png'});
    await browser.close();
})();

執行檔案

node index.js

執行後可看到,圖片已經截圖出來了

3831128-19ffcd26d624638e.png
截圖

程式碼地址: https://github.com/MarxJiao/puppeteer-test

相關文章