分享

centos下使用puppeteer进行网页截图截图常见问题:

 看见就非常 2020-05-29

1、安装nodejs

由于puppeteer目前只支持在node环境中运行,所以需要提前安装nodejs:
centos下安装nodejs

2、安装chromium

手动去这个网站下载 https://npm./mirrors/chromium-browser-snapshots/:
切换到data目录

cd /data
  • 1

比如下载609904版本的谷歌浏览器

wget https://npm./mirrors/chromium-browser-snapshots/Linux_x64/609904/chrome-linux.zip
  • 1

解压进入目录,查看谷歌浏览器的依赖是否安装完全

ldd chrome
  • 1

如果依赖没有安装完全,则执行以下命令安装依赖,完成以后用ldd命令再次确认:

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 -y
  • 1

修改puppeter.js的 executablePath: ‘/data/chrome-linux/chrome’

3、安装puppeteer

切换到node的安装目录

cd /data/node-v10.15.0-linux-x64/
  • 1

初始化npm,一直回车就行了,会生成一个package.json文件

npm init
  • 1

然后安装puppeteer

npm i puppeteer --ignore-scripts
  • 1

修改puppeteer.js的const puppeteer = require(’/data/node-v10.15.0-linux-x64/node_modules/puppeteer’);

4、安装中文字体

使用以下命令查看,如果没有相应字体的话,网盘链接: https://pan.baidu.com/s/1Q8rcZinMsPY4xwuscmUJ3g ,下载平方和微软雅黑字体

fc-list :lang-zh
  • 1

将字体 ttf 文件放到 /usr/share/fonts这个路径下,再次使用上面命令查看是否安装成功

5、测试验证

新建一个文件puppeteer.js,复制以下代码:

const puppeteer = require('/data/node-v10.15.0-linux-x64/node_modules/puppeteer');

const args = process.argv;

const url = args[2];

const name = args[3];

(async () => {

  const browser = await (puppeteer.launch({

    // 若是手动下载的chromium需要指定chromium地址, 默认引用地址为 /项目目录/node_modules/puppeteer/.local-chromium/

    executablePath: '/data/chrome-linux/chrome',

    //设置超时时间

    timeout: 15000,

    //如果是访问https页面 此属性会忽略https错误

    ignoreHTTPSErrors: true,

    // 打开开发者工具, 当此值为true时, headless总为false

    devtools: false,

    // 关闭headless模式, 不会打开浏览器

    headless: true,

    args: [

            '--disable-gpu',

            '--disable-dev-shm-usage',

            '--disable-setuid-sandbox',

            '--no-first-run',

            '--no-sandbox',

            '--no-zygote',

            '--single-process'

        ]

  }));

  const page = await browser.newPage();

  // 设置页面分辨率

  await page.setViewport({width: 750, height: 1150});

  await page.goto(url);

  await page.screenshot({

    path: name,

    type: 'png',

    // quality: 100, 只对jpg有效

    fullPage: true,

  });

  browser.close();

})();
  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

  • 11

  • 12

  • 13

  • 14

  • 15

  • 16

  • 17

  • 18

  • 19

  • 20

  • 21

  • 22

  • 23

  • 24

  • 25

  • 26

  • 27

  • 28

  • 29

  • 30

  • 31

  • 32

  • 33

  • 34

  • 35

  • 36

  • 37

  • 38

  • 39

  • 40

  • 41

  • 42

  • 43

  • 44

  • 45

  • 46

  • 47

  • 48

  • 49

  • 50

  • 51

  • 52

  • 53

  • 54

  • 55

  • 56

  • 57

  • 58

  • 59

  • 60

  • 61

  • 62

  • 63

  • 64

  • 65

  • 66

  • 67

  • 68

  • 69

  • 70

  • 71

  • 72

  • 73

  • 74

  • 75

然后在该目录下执行以下命令进行测试:

node puppeteer.js http://www.baidu.com 1.png
  • 1

会生成一个1.png的图片,打开查看图片是否和网站内容一致即可

6、puppeteer截图常见问题:

(1)网页地址url中不能包含 & 或者是 | 等特殊符号

(2)修改chrome的启动项,可以提高截图效率
亲测截图

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多