Я пытаюсь сохранить веб-страницу для автономного использования с Nodejs и puppeteer.Я вижу много примеров с:
await page.screenshot({path: 'example.png'});
Но с большей веб-страницей это не вариант.Поэтому лучший вариант в кукловоде - это загрузить страницу, а затем сохранить как:
const html = await page.content();
// ... write to file
Хорошо, это работает.Теперь я собираюсь прокручивать страницы как твиттер.Поэтому я решил заблокировать все изображения на странице кукловода:
page.on('request', request => {
if (request.resourceType() === 'image') {
const imgUrl = request.url()
download(imgUrl, 'download').then((output) => {
images.push({url: output.url, filename: output.filename})
}).catch((err) => {
console.log(err)
})
request.abort()
} else {
request.continue()
}
})
Хорошо, теперь я использовал lib 'npm download', чтобы загрузить все изображения.Да, с загруженными изображениями все в порядке: D.
Теперь, когда я сохраняю содержимое, я хочу указать на автономные изображения в источнике.
const html = await page.content();
Но теперь мне нравится заменятьвсе
<img src="/pic.png?id=123">
<img src="https://twitter.com/pics/1.png">
А также такие вещи, как:
<div style="background-image: url('this_also.gif')></div>
Так есть ли способ (в кукловоде) очистить большую страницу и сохранить весь контент в автономном режиме?
Javascript и CSS тоже подойдут
Обновление
А пока я снова открою большой HTML-файл с кукловодом.
А затем перехватить все файлы как: https://dom.com/img/img.jpg, /file.jpg, ....
request.respond({
status: 200,
contentType: 'image/jpeg',
body: '..'
});
Я также могу сделать это с расширением Chrome.Но мне нравится иметь функцию с некоторыми опциями page.html (), такую же как page.pdf ()