web-dev-qa-db-ja.com

puppeteerを使用してローカルhtmlファイルを開く

ヘッドレスchrome puppeteerを使用して(Webサーバーなしで)ローカルhtmlファイルを開くことはできますか?ローカルサーバーに対してのみ動作するようにゲートできました。

SetContent()apiおよびgoto() api

  1. page.goto:ローカルファイルまたはfile://でも機能しませんでした。
  2. page.setContent:html文字列用
16
Anil Namde

ローカルでテストを行い(Windowsでこれを確認できます)、puppeteerはpage.gotoと完全なファイルURLを使用してローカルのhtmlファイルを喜んで開き、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();    
})();

相対パスを使用する必要がある場合は、相対ファイルパスの使用に関する次の質問を参照してください。 File Uri Scheme and Relative Files

15
compound eye

ファイルがローカルにある場合、setContentの使用はgotoよりも優れています。

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

setContentgotoの間のパフォーマンスを ここで確認できます

7
ChuongTran

なぜHTMLファイルを開いてコンテンツを読み取ってから「setContent」

3

ブラウザにロードしたいファイルを開き、URLをコピーして、すべての\が正しいことを確認します。

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