Я пытаюсь использовать Puppeteer для загрузки любой заданной веб-страницы. Я хотел бы загрузить файл HTML, исходники CSS и все изображения в локальную папку (чтобы иметь возможность читать страницы позже, без подключения к Интернету).
Проблемы следующие:
- 1- Я не нашел, как разобрать HTML-файл для обнаружения источников CSS и изображений и как его загрузить.
- 2- Я не понял, как изменить путь к этим ресурсам и убедиться, что он будет указывать на мою локальную папку.
Пока я не уверен, как лучше всего разбирать константное содержимое "html" (см. Ниже). Я не понял, как редактировать html с помощью JSDOM.
const puppeteer = require('puppeteer');
const jsdom = require('jsdom');
const { JSDOM } = jsdom;
(async () => {
const url = 'https://stackoverflow.com/questions/54507560/how-to-download-html-css-and-imgs-using-puppeteer';
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto(url, {waitUntil: 'load'});
const html = await page.content();
const dom = new JSDOM(html);
// I'm trying to grab all the img and so to be able to edit the path
console.log(dom.window.document.querySelectorAll("img"));
// ^ this is not working it return the following object in my node shell :
// NodeList { '0': HTMLImageElement {}, '1': HTMLImageElement {} }
// I don't know how to process this object and to grab each image path and then to dl it. I don't know how to edit each path to make it relative to my local folder.
browser.close();
})();
Обновление: сейчас я пытаюсь разобрать HTML с помощью JSDOM.
cheerio
, вызватьvar $ = cheerio.load(html)
и использовать оттуда синтаксический анализ, подобный jquery? Расскажите немного подробнее о том, как вы не смогли разобрать html, включая вашу попытку сделать это. - person MadWard   schedule 04.02.2019