lxq.link
postscategoriestoolsabout

Headless Chrome和Puppeteer的使用

ON THIS PAGE

Headless Chrome

Chrome 59 之后提供了 Headless 模式,其允许在命令行中使用 Chromium 以及 Blink 渲染引擎提供的完整的现代 Web 平台特性。

为chrome可执行文件创建别名:

alias chrome="/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome"
#打印DOM:
chrome --headless --disable-gpu --dump-dom http://www.lxq.link

#输出为PDF:
chrome --headless --disable-gpu --print-to-pdf http://www.lxq.link

#获取页面截图:
chrome --headless --disable-gpu --screenshot http://www.lxq.link

# Size of a standard letterhead.
chrome --headless --disable-gpu --screenshot --window-size=1280,1696 http://www.lxq.link

# Nexus 5x
chrome --headless --disable-gpu --screenshot --window-size=412,732 http://www.lxq.link

Windows 系统可以使用 start 命令

start chrome --headless --enable-logging --disable-gpu --screenshot --hide-scrollbars --window-size=600,1000 "https://www.lxq.link"

注意: Windows 默认将输出文件写入到 chrome 可执行文件同级目录下,带有版本号的文件夹 比如:C:\Program Files\Google\Chrome\Application\88.0.4324.104

如果想指定输出的目录,要添加参数到--screenshot

完整的参数如下

start chrome --headless --enable-logging --disable-gpu --screenshot="D:\screen.png" --hide-scrollbars --window-size=600,1000 "https://www.lxq.link"

Headless Chrome Node API

Install Puppeteer

Puppeteer is a Node library which provides a high-level API to control headless Chrome or Chromium over the DevTools Protocol. It can also be configured to use full (non-headless) Chrome or Chromium.

npm i --save puppeteer

下载完puppeteer包之后有执行node install.js去下载chromium,由于网络的原因,国内安装puppeteer时可能会报如下错误:

ERROR: Failed to download Chromium r536395! Set "PUPPETEER_SKIP_CHROMIUM_DOWNLOAD" env variable to skip download.

可以使用淘宝的cnpm安装:

npm install -g cnpm --registry=https://registry.npm.taobao.org
cnpm i puppeteer --save
2020-03-10