1
votes

Pourquoi est-ce que j'obtiens cette erreur "Le navigateur n'est pas téléchargé" lors de l'exécution d'un simple script de marionnettiste sous Linux?

J'ai essayé de télécharger le navigateur headless manuellement plusieurs fois et plusieurs autres tentatives, mais l'erreur persiste. Exécution de Linux Mint.

const browser = await puppeteer.launch({
    executablePath: '/full/path/to/chrome'
});

Voici le code:

#!/usr/bin/node

const puppeteer = require('puppeteer');

async function scrape() {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();
    await page.goto('https://ratings.fide.com/top.phtml?list=men');
    const [ele] = page.$x('//*[@id="main-col"]/table[2]/tbody/tr[2]/td/table/tbody/tr[2]/td[2]/a')
    const name = await ele.getProperty('text')

    console.log(name)
};

scrape()

résolu par @mbit

solution: p >

(node:25262) UnhandledPromiseRejectionWarning: Error: Browser is not downloaded. Run "npm install" or "yarn install"
    at ChromeLauncher.launch (/home/oem/web-scraping/puppetering/node_modules/puppeteer/lib/Launcher.js:236:15)
(node:25262) UnhandledPromiseRejectionWarning: Unhandled promise 
rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:25262) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.


9 commentaires

Avez-vous fait ce que l'erreur vous dit de faire? Veuillez également modifier votre question si vous avez des informations supplémentaires à ajouter.


oui @HereticMonkey npm install ne résout pas, ni ne tente de faire sudo apt installer chrome-browser


lorsque vous effectuez npm install , télécharge-t-il chrome? (vous devriez voir une barre de progression du téléchargement de chrome (> 100 Mo))


@mbit non, aucune trace de téléchargement de chrome lors de l'exécution de npm install, j'ai regardé dans la corbeille et ce n'est pas là non plus, et sudo apt install chrome-browser entraîne un échec du téléchargement avec des erreurs 404, --fix-missing wont fonctionne aussi


utilisez-vous une sorte de système de blocage DNS comme pihole?


@mbit non, pas de blocage DNS


mon intuition est que quelque chose bloque "storage.googleapis.com", les systèmes de blocage des publicités DNS bloquent généralement cela. si vous ne parvenez pas à retracer le problème, vous pouvez simplement télécharger le chrome stable et le transmettre au puppeteer.launch


L'erreur persiste même après avoir spécifié d'utiliser '/ usr / bin / google-chrome-stable' comme navigateur: const browser = await puppeteer.launch ('/ usr / bin / google-chrome-stable');


Ce n'est pas correct. vérifie ma réponse.


4 Réponses :


1
votes

Lancement de puppeteer avec chrome au lieu de chrome groupé:

const browser = await puppeteer.launch({
    executablePath: '/full/path/to/chrome'
});


1 commentaires

Merci beaucoup pour votre aide, je l'apprécie. C'est la bonne solution.



4
votes

J'ai installé marionnettiste avec le drapeau global, en tant que root. Ensuite, j'ai commencé un projet en tant qu'utilisateur et j'ai eu le même problème que le vôtre.

L'exécution de npm install puppeteer --save dans le projet et en tant qu'utilisateur a déclenché le téléchargement de Chromium et a résolu cette erreur.

Je ne sais pas pourquoi l'installation globale de pupeeter ne déclenche pas les mêmes dépendances.


0 commentaires

1
votes

A eu un problème similaire lors de l'utilisation de "magepack". Les commandes suivantes ont aidé à l'exécuter:

apt-get install chromium-browser
export PUPPETEER_EXECUTABLE_PATH=/snap/bin/chromium

Merci.


0 commentaires

1
votes

Si vous exécutez NPM install dans un conteneur avec un pipeline CI, la plupart du temps, chrome n'est pas installé.

Essayez plutôt d'exécuter NPM CI , cela me convient toujours.


0 commentaires