木偶:如何下载整个网页以供离线使用

时间:2019-02-21 18:57:53

标签: javascript html css web-scraping puppeteer

我将如何使用Google的Puppeteer来抓取完整的css / javascript / media(而不只是HTML)的整个网站?成功地在其他刮削作业上进行尝试后,我想它应该能够。

但是,通过在线查看许多出色的示例,没有明显的方法可以这样做。我能找到的最接近的电话是

html_contents = await page.content()

并保存结果,但是保存的副本中没有任何非HTML元素。

是否可以保存网页以供Puppeteer脱机使用?我将不胜感激。

1 个答案:

答案 0 :(得分:4)

当前可以通过'Page.captureSnapshot'格式的实验性CDP调用MHTML

'use strict';

const puppeteer = require('puppeteer');
const fs = require('fs');

(async function main() {
  try {
    const browser = await puppeteer.launch();
    const [page] = await browser.pages();

    await page.goto('https://en.wikipedia.org/wiki/MHTML');

    const cdp = await page.target().createCDPSession();
    const { data } = await cdp.send('Page.captureSnapshot', { format: 'mhtml' });
    fs.writeFileSync('page.mhtml', data);

    await browser.close();
  } catch (err) {
    console.error(err);
  }
})();