PuppeteerとChrome Headlessの組み合わせNode.jsのウェブサービスは爬虫類サービスの入門とピットジャンプを提供する(Linux上の配置)

3709 ワード

コンポーネントのインストール構成と一般的なエラー解決
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");