PuppeteerとChrome Headlessの組み合わせNode.jsのウェブサービスは爬虫類サービスの入門とピットジャンプを提供する(Linux上の配置)
3709 ワード
コンポーネントのインストール構成と一般的なエラー解決
1 nodeとnpmのインストール(最新バージョン)
2インストールバージョンの表示
3 linuxに環境構成を追加
4ミラーの切り替え(chromiumのインストールエラーの防止)
上記のエラーは次のとおりです.
5 puppeteerのnpmパッケージをインストールします(プロジェクトディレクトリの下に新しいプロジェクトフォルダを作成することをお勧めします)
6よくあるエラーと解決(以上の5ステップがうまくインストールされていない場合は解決方法を参照してください)
a直接実行すると、次のエラーが発生します(ネット上でまとめられた一般的なエラー):
依存パッケージをインストールする必要があります.
このパッケージがない場合は、googleのソースを追加してダウンロードし、urlをミラーに置き換える必要があります.ファイル
b実行を試みるとsandboxのエラー(linuxのリターンは以下のようにこのコードを付けなければならない)もあります.もしあなたの環境が露出している場合は、公式チュートリアルに砂箱を加えて実行することをお勧めします.そうしないと、jsコードに
c一部のサーバーのデフォルトフォントは不完全で、手動でインストールする必要があります.以下のようなエラーが発生した場合、フォントをインストールする必要があります.
インストール方法は簡単です.
二実行方法とテスト例
テスト例の編集は.jsの末尾は、例えばtest.js
実行方法
node test.js
実行に成功すると、現在のディレクトリのスクリーンショットにexampleという名前が生成されます.pngのファイル
3 nodeが持参したexpressとpuppeteerを組み合わせてhttpインタフェース呼び出しを提供する爬虫類サービスを構築する
コード導入パッケージは詳細を述べる必要があるため、新しいブログを開く必要があります.
1 nodeとnpmのインストール(最新バージョン)
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash
source ~/.nvm/nvm.sh
nvm install node
nvm use node
2インストールバージョンの表示
node -v
npm -v
3 linuxに環境構成を追加
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
4ミラーの切り替え(chromiumのインストールエラーの防止)
npm config set puppeteer_download_host=https://storage.googleapis.com.cnpmjs.org
上記のエラーは次のとおりです.
npm config set puppeteer_download_host=https://npm.taobao.org/mirror
5 puppeteerのnpmパッケージをインストールします(プロジェクトディレクトリの下に新しいプロジェクトフォルダを作成することをお勧めします)
npm i puppeteer --save
6よくあるエラーと解決(以上の5ステップがうまくインストールされていない場合は解決方法を参照してください)
a直接実行すると、次のエラーが発生します(ネット上でまとめられた一般的なエラー):
/some/path/root/node_modules/puppeteer/.local-chromium/linux-543305/chrome-linux/chrome: error while loading shared libraries: libXss.so.1: cannot open shared object file: No such file or directory
...
依存パッケージをインストールする必要があります.
sudo yum install google-chrome-stable
このパッケージがない場合は、googleのソースを追加してダウンロードし、urlをミラーに置き換える必要があります.ファイル
/etc/yum.repo.d/google-chrome.repo
を追加します.[google-chrome]
name=google-chrome
baseurl=http://dl.google.com/linux/chrome/rpm/stable/$basearch
enabled=1
gpgcheck=1
gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub
gpgkey
をダウンロードできない場合は、gpgcheck
の値を0
に変更してyumのインストールコマンドをもう一度実行すればよい.b実行を試みるとsandboxのエラー(linuxのリターンは以下のようにこのコードを付けなければならない)もあります.もしあなたの環境が露出している場合は、公式チュートリアルに砂箱を加えて実行することをお勧めします.そうしないと、jsコードに
no-sandbox
のパラメータを追加すれば、私のように直接閉じることができます.const browser = await puppeteer.launch({args: ['--no-sandbox']});
c一部のサーバーのデフォルトフォントは不完全で、手動でインストールする必要があります.以下のようなエラーが発生した場合、フォントをインストールする必要があります.
[0427/123834.275317:FATAL:platform_font_linux.cc(83)] Check failed: InitDefaultFont(). Could not find the default font
インストール方法は簡単です.
yum
でいいです.yum install ipa-gothic-fonts xorg-x11-fonts-100dpi xorg-x11-fonts-75dpi xorg-x11-utils xorg-x11-fonts-cyrillic xorg-x11-fonts-Type1 xorg-x11-fonts-misc -y
二実行方法とテスト例
テスト例の編集は.jsの末尾は、例えばtest.js
//==========TestStart=============
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({
ignoreHTTPSErrors: true,
headless: true,//true false
args: ['--no-sandbox', '--disable-setuid-sandbox'],
});// linux
const page = await browser.newPage(); //
await page.goto('https://example.com'); // http://example.com
await page.screenshot({path: 'example.png'}); // example.png
await browser.close(); //
})();
//==========TestEnd================
実行方法
node test.js
実行に成功すると、現在のディレクトリのスクリーンショットにexampleという名前が生成されます.pngのファイル
3 nodeが持参したexpressとpuppeteerを組み合わせてhttpインタフェース呼び出しを提供する爬虫類サービスを構築する
コード導入パッケージは詳細を述べる必要があるため、新しいブログを開く必要があります.
//
const express = require('express');
const puppeteer = require('puppeteer');
const bodyParser = require('body-parser');
const assert = require('assert');
const request = require("request-promise");