Кукловод, сохранить веб-страницу и изображения - PullRequest
0 голосов
/ 05 декабря 2018

Я пытаюсь сохранить веб-страницу для автономного использования с 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 ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...