Puppeteer を使用して Linux (CentOS) で Web ページのスクリーンショット機能を実装する

Puppeteer を使用して Linux (CentOS) で Web ページのスクリーンショット機能を実装する

Linux に puppeteer をインストールするときに、次の問題が発生する可能性があります。この記事では、この難問から抜け出す方法を説明します。

> [email protected] をインストール /www/node_modules/puppeteer
> ノードのインストール.js

エラー: Chromium r706915 のダウンロードに失敗しました。ダウンロードをスキップするには、「PUPPETEER_SKIP_CHROMIUM_DOWNLOAD」環境変数を設定してください。
{ エラー: EACCES: 権限が拒否されました、mkdir '/www/node_modules/puppeteer/.local-chromium'
-- 非同期 --
BrowserFetcher.<匿名> (/www/node_modules/puppeteer/lib/helper.js:111:15) で
オブジェクト.<anonymous> (/www/node_modules/puppeteer/install.js:62:16)
Module._compile (module.js:635:30) で
Object.Module._extensions..js (module.js:646:10) で
Module.load (module.js:554:32) で
tryModuleLoad (module.js:497:12) で
Function.Module._load (module.js:489:3) で
Function.Module.runMain (module.js:676:10) で
起動時 (bootstrap_node.js:187:16)
bootstrap_node.js:608:3 で
エラー番号: -13,
コード: 'EACCES'、
システムコール: 'mkdir',
パス: '/www/node_modules/puppeteer/.local-chromium' }
npm WARN enoent ENOENT: そのようなファイルまたはディレクトリはありません。'/www/package.json' を開いてください
npm WARN www 説明なし
npm 警告 www リポジトリ フィールドがありません。
npm 警告 www README データがありません
npm 警告 www ライセンスフィールドがありません

puppeteer を正常にインストールし、実際にスクリーンショットを撮ったプロセスは次のとおりです。

1. nodejsとnpmをインストールする

# ダウンロードして解凍します wget -c https://nodejs.org/dist/v8.9.1/node-v8.9.1-linux-x64.tar.xz
tar -xvf ノード-v8.9.1-linux-x64.tar.xz
# 移動と名前の変更(オプション)
mv ノード-v8.9.1-linux-x64 /www/nodejs
# ソフトリンク(ショートカット)を作成します。前の手順の名前が異なる場合は、実際の状況に応じてこの手順の下線部分を調整してください。ln -s /www/nodejs/bin/node /usr/local/bin/node
ローカルの Node.js ディレクトリに npm と入力し、

2. クロムをインストールする

yum install chromium

3. puppeteer-core をインストールします (puppeteer を直接インストールすると、chromium をダウンロードできないためエラーが発生します)

npm i puppeteer-core

4. 新しいa.jsを作成する

'puppeteer-core' が必要です。
(非同期() => {
 const browser = puppeteer.launch({
 実行可能パス: '/usr/bin/chromium-browser',
 引数:["--no-sandbox"]
 });
 const page = browser.newPage() を待機します。
 page.goto('https://www.baidu.com') を待機します。
 page.screenshot({path: 'example.png'}); を待ちます。
 ブラウザを閉じるのを待ちます。
})();

このステップのコードは、インターネット上のものとは異なる場合があります。1つは、requireのコードがpuppeteerではなくpuppeteer-coreであることです。これは、puppeteerではなくpuppeteer-coreをインストールしたためです。

もう1つは、起動時に2つのパラメータがあることです。最初のパラメータは、Puppeteerを直接インストールしていないため、パスを指定する必要があります。2番目のパラメータは、Chromiumの制限によるもので、ルートアカウントで実行するためにこのパラメータを追加する必要があります。

5. a.jsを実行する

node a.js

実行後、example.pngが表示されます。

注意: ページに中国語が含まれている場合、中国語フォントがないため正しく表示されない可能性があります。解決策は、コンピュータ上の c:/windows/fonts にある中国語フォントをサーバーの /usr/share/fonts/chinese に直接アップロードすることです (デフォルトでは中国語ディレクトリがないため、自分で作成できます)。 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :

Puppeter 関連ドキュメント https://pptr.dev/

要約する

以上、Linux(centos)でpuppeteerを使ってWebページのスクリーンショット機能を実現する方法についてご紹介しました。参考になれば幸いです。

以下もご興味があるかもしれません:
  • Linux 向けの強化されたスクリーンショットと共有ツール: ScreenCloud
  • Linux に MySql をインストールする手順の詳細なスクリーンショット
  • Linux で PHP を使用して Web サイトのスクリーンショットを撮る方法
  • Linux でスクリーンショットを共有するためのスクリプトを Python を使って記述するチュートリアル

<<:  MySQLリモート接続権限の詳細な説明

>>:  Vue命令の実装原理の分析

推薦する

MySQL における USING と HAVING の使用法の簡単な分析

この記事では、例を使用して MySQL での USING と HAVING の使用方法を説明します。...

HTML <!--...--> コメントタグの役割の詳細な分析

多くのウェブサイトのソースコードを確認すると、多くのコメントが見つかります。特に、ソース文書にコメン...

Vue は Websocket カスタマー サービス チャット機能を実装します

この記事では主に基本的なチャットの実装方法を紹介します。今後は絵文字や写真のアップロードなどの機能も...

Nginxの現在の制限設定の詳細な説明

この記事では、最も単純なものから最も複雑なものまで、Nginx の現在の制限構成を例を使って説明しま...

役に立つメタ設定方法(必読)

<meta name="viewport" content="...

Docker で Oracle 11g イメージ構成をプルダウンする際の問題を分析する

1. イメージをプルするdocker pull レジストリ.cn-hangzhou.aliyuncs...

nginxを使用して画像サイズを動的に変換し、サムネイルを生成します。

Nginx ngx_http_image_filter_module モジュール (nginx バ...

Linux で MySQL をインストールして設定する

システム: Ubuntu 16.04LTS 1\公式サイトからmysql-5.7.18-linux-...

Ubuntu 20.04 オペレーティング システムの VMware インストール チュートリアル図

メモ: とにかく体験してみましょう。記録: NO.209この例の環境:仮想マシン: vmwareオペ...

CSS リセットスタイルリセットの実装例

はじめに: すべてのブラウザには、「ユーザー エージェント スタイル シート」と呼ばれる、すべてのペ...

Windows10 HomeバージョンにDockerをインストールするときに発生する問題の概要

Docker ダウンロード アドレス: http://get.daocloud.io/#instal...

nginx と keepalived を組み合わせて高可用性を実現するための手順を完了する

序文システムの高可用性を満たすためには、通常、クラスターを構築する必要があります。ホストがクラッシュ...

CocosCreator 入門チュートリアル: TS で初めてのゲームを作る

目次前提TypeScript と JavaScriptコードエディタの選択TypeScriptを学ぶ...

Vue-router は現在の場所 (/path) へのナビゲーションを許可しません。エラーの原因と修正

目次エラーメッセージ原因エラーのデモンストレーション回避策方法1方法2方法3エラーメッセージ現在の場...

Dockerfileを使用して独自のイメージを作成する方法

1. 空のディレクトリを作成する $ cd /home/xm6f/dev $ mkdir myapp...