Вопрос №55137 от пользователя Георгий Мелихов в проекте «Загрузчик страниц»

Георгий Мелихов

Сначала показалось, что описание достаточно понятное, но как только сел, ничего не понял:

  1. Правильно ли я понял, что я должен сначала выгрузить код html-страницы, а затем найти в этом коде все <img src = '...'></img> и скачать эти картинки в локальную папку?
  2. Была приведена фикстура. Эта фикстура хороша для тестов, но в самой программе же надо какую-то реальную страницу использовать. Какую использовать? https://ru.hexlet.io/courses
  3. В фикстурах приведена ссылка /assets/..../nodejs.png. Так по какому адресу я могу ее выкачать? ru.hexlet.io/... - не работает, нет такой картинки. Какие варианты?
  4. Нужно ли бороться с лишними пробелами, которые cheerio от себя добавляет? Если да, то сторонними библиотеками?
6 0

Станислав Дзисяк

Георгий, приветствую!

Правильно ли я понял, что я должен сначала выгрузить код html-страницы, а затем найти в этом коде все <img src = '...'></img> и скачать эти картинки в локальную папку?

Да, всё верно. Для чтобы проанализировать содержимое html файла, вначале нужно его скачать. И потом скачать все необходимые ресурсы в директорию. Описание того как должно формироваться имя директории и имена ресурсов описано вначале 2-го шага.

Эта фикстура хороша для тестов, но в самой программе же надо какую-то реальную страницу использовать. Какую использовать?

Для экспериментов с утилитой вы можете использовать любой урл какой захотите. Урл https://ru.hexlet.io/courses просто указан в качестве примера. Найдите в интернете какую-нибудь относительно простую страницу и используйте её.

Так по какому адресу я могу ее выкачать? ru.hexlet.io/... - не работает, нет такой картинки. Какие варианты?

В примере содержимое html файла указано для примера. То есть получить такое содержимое при реальном обращении на https://ru.hexlet.io/courses не получится.

Нужно ли бороться с лишними пробелами, которые cheerio от себя добавляет? Если да, то сторонними библиотеками?

Тут выбор за вами. Можете оставить html таком виде как выдаёт cheerio, а можете отформатировать. Для этого подойдёт, например, библиотека prettier.

0

Георгий Мелихов

Спасибо за ответ!

Для чтобы проанализировать содержимое html файла, вначале нужно его скачать

А зачем мне анализировать содержимое файла? Мне axios выдает, html-код. Я могу сразу его проанализировать и один раз записать в файл с уже корректными ссылками.

Тут выбор за вами. Можете оставить html таком виде как выдаёт cheerio, а можете отформатировать. Для этого подойдёт, например, библиотека prettier.

Вы имели в виду этот преттьер - https://prettier.io/? Он же для IDE или я чего-то недопонимаю?

По экспериментам - понятно, спасибо. Но, как мне кажется, лучше эти вещи прописывать явно. Не все одинаково воспринимают информацию, и не самые опытные люди вроде меня могут подумать, что от использования того или иного эндпоинта может зависеть задача (например, дальше могут идти ответвления, которые специфичны именно для данного ресурса).

0

Станислав Дзисяк

А зачем мне анализировать содержимое файла? Мне axios выдает, html-код.

Так всё верно, axios скачивает файл и выдаёт вам его содержимое для последующего анализа.

Вы имели в виду этот преттьер - https://prettier.io/? Он же для IDE или я чего-то недопонимаю?

Да, всё верно. Именно этот prettier. Посмотрите по ссылке, как его можно использовать в качестве библиотеки в коде.

0

Георгий Мелихов

Спасибо большое! Видимо, не все ссылки в документации перетыкал.

0

Георгий Мелихов

Так всё верно, axios скачивает файл и выдаёт вам его содержимое для последующего анализа.

Не занудствую, просто пытаюсь понять, не упускаю ли я чего-то.

Библиотека axios возвращает мне response, в котором я могу посмотреть response.data. Это еще не файл. Этот response.data - это же и есть html-код. Я могу прямо на уровне переменной его обработать и уже сразу один раз всё правильно записать и выкачать. Вас я понял немного иначе: я должен этот код сначала "as-is" записать в текстовый файл, потом считать оттуда, проанализировать, потом отредактировать и выкачать. Немного разные подходы, и я пытаюсь понять, правильно ли я Вас понял и если да, то почему второе лучше первого.

0

Станислав Дзисяк

Вас я понял немного иначе: я должен этот код сначала "as-is" записать в текстовый файл, потом считать оттуда, проанализировать, потом отредактировать и выкачать.

Нет, конечно, для того чтобы проанализировать содержимое, записывать его в файл не нужно.

Библиотека axios возвращает мне response, в котором я могу посмотреть response.data

Всё верно. Для простоты мы ведь говорим, например, открыл файл по ссылке, тут имелось в виду тоже самое.

1

Используйте Хекслет по максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Даю согласие на обработку персональных данных, соглашаюсь с «Политикой конфиденциальности» и «Условиями оказания услуг»

Рекомендуемые программы

С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.

Иконка программы Фронтенд-разработчик
Профессия
Разработка фронтенд-компонентов веб-приложений
25 мая 10 месяцев
Иконка программы Python-разработчик
Профессия
Разработка веб-приложений на Django
25 мая 10 месяцев
Иконка программы PHP-разработчик
Профессия
Разработка веб-приложений на Laravel
25 мая 10 месяцев
Иконка программы Node.js-разработчик
Профессия
Разработка бэкенд-компонентов веб-приложений
25 мая 10 месяцев
Иконка программы Fullstack-разработчик
Профессия
Новый
Разработка фронтенд и бэкенд компонентов веб-приложений
25 мая 16 месяцев
Иконка программы Верстальщик
Профессия
Вёрстка с использованием последних стандартов CSS
в любое время 5 месяцев
Иконка программы Java-разработчик
Профессия
Разработка приложений на языке Java
25 мая 10 месяцев
Иконка программы Разработчик на Ruby on Rails
Профессия
Создает веб-приложения со скоростью света
25 мая 5 месяцев