Как написать скрипт для парсинга изображений с html страниц локально?
Подскажите пожалуйста, как реализовать следующее:
Есть очень много html страниц (скаченные на ПК). На данных страницах расположены каталоги фото. Вручную собственно качать отдельно каждую картинку не лучший вариант. Хотелось бы выгрузить все фото со страниц html в отдельную папку. Как это можно сделать? Думаю попробовать самому разобраться и написать подобный скрипт если это реально конечно выполнить (выгрузить фото с html файла).
PS. Язык по сути не важен, но желательно пхп, js/нода.
то есть псевдокодом
fs.readFile('myHtml.html') -> cheerio.load(file) -> imageArray = $(' .klassFotok img ') -> imageArray.forEach принести img src и сохранить
hzzzzl Помогите пожалуйста, что то голова сегодня вообще не работает.
У меня получается структура каталогов такая:
- Пользователь 1
- - - Название 1
- - - - - Папка 1
- - - - - - - images.html
- - - Название 2
- - - - - Папка 2
- - - - - - - images.html
- Пользователь 2
- - - Название 1
- - - - - Папка 1
- - - - - - - images.html
- - - Название 2
- - - - - Папка 2
- - - - - - - images.html
и т.д. Мне нужно распарсить только images.html в директориях. Как расписать это в циклах? Думал это будет легче, просто год уже к коду не притрагивался, вообще все выветрилось. Мне надо чтобы скрипт не зависел от названий директорий
hzzzzl, написал уже сам)).
В общем у меня получается что на каждой итерации доступен нужный файл html, точнее его путь. Как теперь в cheerio его загрузить? Что то не выходит. вроде load срабатывает а дальше как не знаю. при поиске селектора ошибка.
аа, вижу что метод .find() тоже есть..
ну должно работать как бы, а fs.fileReadSync точно приносит содержимое файла?
вот как я делал в свое время, но я делал не из локальных файлов, а сначала подгружал статью из интернета в переменную html, но по идее то же самое
// html = содержимое файла
const $ = cheerio.load(html)
const h1 = $('.article h1').text()
const body = $('.article__body p') // все р
.map((i, el) => $(el).text()) // текст из них
.toArray() // массив из них
$('img') это объект cheerio со своими свойствами и методами, предлагаю посмотреть его структуру в отладчике VS Code
наверняка $('img').attr('src') дает аттрибут для нулевого элемента массива, а надо пройтись по всем элементам и получить src -- для этого я перевожу в обычный массив javascript методом toArray(), ну и дальше уже средствами яваскрипта
ну как-то так, у меня не очень хорошо с объяснениями :D