web-dev-qa-db-fra.com

Ouverture d'un fichier HTML local à l'aide de Puppeteer

Est-il possible d’ouvrir un fichier html local avec chrome sans tête à l’aide de puppeteer (sans serveur Web)? Je ne pouvais que le faire fonctionner contre un serveur local.

Je pouvais voir setContent () api et goto () api et 

  1. page.goto: ne fonctionnait pas non plus avec le fichier local ou le fichier: //.
  2. page.setContent: est pour la chaîne HTML
11
Anil Namde

Je viens de faire un test localement (vous pouvez voir que je l'ai fait sous Windows) et le marionnettiste a ouvert avec plaisir mon fichier html local en utilisant page.goto et une URL de fichier complète, et l'a enregistré au format PDF:

'use strict';

const puppeteer = require('puppeteer');    
(async() => {    
const browser = await puppeteer.launch();
const page = await browser.newPage();    
await page.goto('file://C:/Users/compoundeye/test.html');    
await page.pdf({
  path: 'test.pdf',
  format: 'A4',
  margin: {
        top: "20px",
        left: "20px",
        right: "20px",
        bottom: "20px"
  }    
});    
await browser.close();    
})();

Si vous devez utiliser un chemin relatif, vous voudrez peut-être examiner cette question à propos de l'utilisation des chemins de fichiers relatifs: Schéma d'Uri de fichier et fichiers relatifs

10
compound eye

Si le fichier est en local, utiliser setContent sera meilleur que passer à goto

var contentHtml = fs.readFileSync('file://C:/Users/compoundeye/test.html', 'utf8');
await page. setContent(contentHtml);    

Vous pouvez vérifier les performances entre setContent et goto à ici

2
ChuongTran

Pourquoi ne pas ouvrir le fichier HTML lire le contenu, puis "setContent"

2
Boban Stojanovski

J'ouvre le fichier que je voulais charger dans le navigateur et copiais l'URL pour m'assurer que tous les fichiers étaient corrects.

await page.goto(`file:///C:/pup_scrapper/testpage/TM.html`);
0
Hellonearthis