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

推薦する

Vueは動的クエリルール生成コンポーネントを実装します

1. 動的クエリルール動的クエリルールは、おおよそ次の図のようになります。ユーザのカスタマイズに応じ...

反応ジャンプ後にルートが変更されてもページが更新されない場合の解決策

目次質問解決質問この問題には多くの理由があるようです。私の問題は、パラメータ付きのURLを更新できな...

JDBC 接続 (MySQL への接続) の 6 ステップのサンプル コード

JDBC の 6 つのステップ: 1. ドライバーを登録する2. データベース接続を取得する3. デ...

VMware vCenter の不正な任意ファイルアップロードの脆弱性 (CVE-2021-21972) について

背景CVE-2021-21972 VMware vCenter における認証されていないコマンド実行...

Mysql | ワイルドカード(%、_ など)を使用したファジークエリの詳細な説明

ワイルドカードのカテゴリ: %パーセント ワイルドカード: 任意の文字が任意の回数出現できることを示...

Layuiテーブルは指定された行のラジオボタンを選択し、その行の実装コードまでスクロールします。

layui テーブルには複数行のデータがあります。外部入力コンテンツを通じて、指定された行を見つけ...

Win10 での MySQL 8.0.15 のインストールと設定のチュートリアル

最近私が学んでいるのは MySQL の知識なので、MySQL をインストールすることが非常に重要です...

CentOS 7 で Docker のポート転送をファイアウォールと互換性のあるように設定する方法

CentOS 7 では、次のようなコマンドを使用してホスト ポートをコンテナー ポートにマッピングす...

ブラウザ(IEシリーズ)を判別するための条件付きコメント

<!--[if IE 6]> IE6 のみが認識可能 <![endif]-->...

MySQL 8.0.11 Community Green Edition の Windows 用インストール手順図

このチュートリアルでは、インストールに最新の MySQL コミュニティ グリーン バージョンである ...

純粋な CSS3 で美しい入力ボックスアニメーションスタイルライブラリを実現 (テキスト入力愛)

純粋な CSS3 で実装された美しい入力ボックス アニメーション スタイル ライブラリを共有します ...

オンラインMySQLオプティマイザの誤判断によって発生した低速クエリイベントを記録する

序文:非常に遅いクエリとリクエストのタイムアウトのアラートを受け取りました。メトリックを通じて My...

Linux でのログ サーバーの設定に関するグラフィック チュートリアル

序文この記事では、Linux 構成ログ サーバーに関する関連コンテンツを主に紹介し、参考と学習のため...

要素の読み込み効果を実現するための純粋なHTML+CSS

これは Element UI の読み込みコンポーネントのエフェクトです。かっこいいですね。実装してみ...

Linux 編集の開始、停止、再起動の Springboot jar パッケージ スクリプトの例

序文springboot設定ファイルでは、設定ファイルの名前には独自の意味と用途があります。 dev...