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命令の実装原理の分析

推薦する

CSSアニメーションでポイント獲得効果を実現するアイデアを詳しく解説

最近のプロジェクトでは、ポイントを集める効果を作成する必要があります。 ボスの説明によると、この効果...

Win10 の Linux サブシステムを有効にする方法を説明します (詳細な画像とテキスト付き)

今日は、Windows 10 で Linux サブシステムを有効にする方法を紹介します。早速、手順を...

CSS スキル コレクション - 古典の中の古典

リンク上の点線のボックスを削除しますコードをコピーコードは次のとおりです。 a:アクティブ、a:フォ...

Docker で nginx のログレベルを調整する方法

目次はじめにNginx Dockerファイル新しい会議もっと参考文献はじめに最近、アプリケーションの...

TypeScript における型保護の詳細な説明

目次概要型アサーション構文ではインスタンスオブ構文typeof構文要約する概要TypeScript ...

Vueのイベント処理とイベント修飾子の詳細な説明

<div id="ルート"> <h2>頑張れ、{{na...

MySQLは挿入を使用して複数のレコードを挿入し、データを一括で追加します。

table1 に 5 つのレコードを挿入する場合、次のコードは誤りです。 テーブル1に(id,na...

vue3.0+vant3.0の迅速なプロジェクト構築の実装

目次1. プロジェクトの構築2. Vue3 体験 + Vant 紹介2020年9月18日にvue.j...

Vueのフロントエンドとバックエンドのデータのやり取りと表示を理解する方法

目次1. 技術概要2. 技術的な詳細1. インターフェースからバックエンドデータを取得する2. フロ...

エラー mysql テーブル 'performance_schema...解決方法

テスト環境は、JDBCドライバを使用してMariaDB 5.7でセットアップされています。 <...

MySQLでTEXT/BLOB型を使用する際の注意点を詳しく説明します

1. TEXTとBLOBの違いTEXT ファミリと BLOB ファミリの唯一の違いは、BLOB 型は...

Vueはシンプルなタイマーコンポーネントを実装します

プロジェクトを実行すると、リアルタイム更新、広告アニメーションの連続表示などの要件に遭遇することは避...

docker+jenkins+node.js の自動デプロイメント環境をゼロから構築する方法

このケースはCentOS 7システムに基づいていますDockerの使用経験がある人に適していますLi...

MySQLデータベースが大きすぎる場合にバックアップと復元を行う方法

コマンド: mysqlhotcopyこのコマンドは、ファイルをコピーする前にテーブルをロックし、不完...

JSで実現したページサイドバーの効果に関する研究

目次発見: ディスプレイアニメーションの応用実装:記事の1行目を表示する効果を実現する方法実際、その...