我该如何使用Google的Puppeteer爬取整个网站,包括其所有的CSS/JavaScript/媒体资源(而不仅仅是HTML)?在成功地尝试了其他爬虫工作后,我想它应该可以实现。
然而,在查看了许多优秀的在线示例后,没有明显的方法可供使用。到目前为止,我能找到的最接近的方法是调用
html_contents = await page.content()
是否有办法在 Puppeteer 中保存网页以供离线使用,同时保留非 HTML 元素?
我该如何使用Google的Puppeteer爬取整个网站,包括其所有的CSS/JavaScript/媒体资源(而不仅仅是HTML)?在成功地尝试了其他爬虫工作后,我想它应该可以实现。
然而,在查看了许多优秀的在线示例后,没有明显的方法可供使用。到目前为止,我能找到的最接近的方法是调用
html_contents = await page.content()
是否有办法在 Puppeteer 中保存网页以供离线使用,同时保留非 HTML 元素?
目前可以通过实验性的CDP调用'Page.captureSnapshot'
并使用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);
}
})();
captureSnapshot
正在得到多少开发方面的消息?正如您自己所暗示的那样,它缺少很多功能,尽管比原始 HTML 复制略好一些。 - Coolio2654goto('site.mhtml')
,但是收到了 Error: net::ERR_ABORTED
的错误提示。 - itaiedfile:///path/to/site.mhtml
。 - vsemozhebuty