Вопрос №55137 от пользователя Георгий Мелихов в проекте «Загрузчик страниц»
Сначала показалось, что описание достаточно понятное, но как только сел, ничего не понял:
- Правильно ли я понял, что я должен сначала выгрузить код html-страницы, а затем найти в этом коде все
<img src = '...'></img>
и скачать эти картинки в локальную папку? - Была приведена фикстура. Эта фикстура хороша для тестов, но в самой программе же надо какую-то реальную страницу использовать. Какую использовать? https://ru.hexlet.io/courses
- В фикстурах приведена ссылка
/assets/..../nodejs.png
. Так по какому адресу я могу ее выкачать?ru.hexlet.io/...
- не работает, нет такой картинки. Какие варианты? - Нужно ли бороться с лишними пробелами, которые cheerio от себя добавляет? Если да, то сторонними библиотеками?
Георгий, приветствую!
Правильно ли я понял, что я должен сначала выгрузить код html-страницы, а затем найти в этом коде все <img src = '...'></img> и скачать эти картинки в локальную папку?
Да, всё верно. Для чтобы проанализировать содержимое html файла, вначале нужно его скачать. И потом скачать все необходимые ресурсы в директорию. Описание того как должно формироваться имя директории и имена ресурсов описано вначале 2-го шага.
Эта фикстура хороша для тестов, но в самой программе же надо какую-то реальную страницу использовать. Какую использовать?
Для экспериментов с утилитой вы можете использовать любой урл какой захотите. Урл https://ru.hexlet.io/courses просто указан в качестве примера. Найдите в интернете какую-нибудь относительно простую страницу и используйте её.
Так по какому адресу я могу ее выкачать? ru.hexlet.io/... - не работает, нет такой картинки. Какие варианты?
В примере содержимое html файла указано для примера. То есть получить такое содержимое при реальном обращении на https://ru.hexlet.io/courses не получится.
Нужно ли бороться с лишними пробелами, которые cheerio от себя добавляет? Если да, то сторонними библиотеками?
Тут выбор за вами. Можете оставить html таком виде как выдаёт cheerio, а можете отформатировать. Для этого подойдёт, например, библиотека prettier.
Спасибо за ответ!
Для чтобы проанализировать содержимое html файла, вначале нужно его скачать
А зачем мне анализировать содержимое файла? Мне axios
выдает, html-код. Я могу сразу его проанализировать и один раз записать в файл с уже корректными ссылками.
Тут выбор за вами. Можете оставить html таком виде как выдаёт cheerio, а можете отформатировать. Для этого подойдёт, например, библиотека prettier.
Вы имели в виду этот преттьер - https://prettier.io/? Он же для IDE или я чего-то недопонимаю?
По экспериментам - понятно, спасибо. Но, как мне кажется, лучше эти вещи прописывать явно. Не все одинаково воспринимают информацию, и не самые опытные люди вроде меня могут подумать, что от использования того или иного эндпоинта может зависеть задача (например, дальше могут идти ответвления, которые специфичны именно для данного ресурса).
А зачем мне анализировать содержимое файла? Мне axios выдает, html-код.
Так всё верно, axios скачивает файл и выдаёт вам его содержимое для последующего анализа.
Вы имели в виду этот преттьер - https://prettier.io/? Он же для IDE или я чего-то недопонимаю?
Да, всё верно. Именно этот prettier. Посмотрите по ссылке, как его можно использовать в качестве библиотеки в коде.
Спасибо большое! Видимо, не все ссылки в документации перетыкал.
Так всё верно, axios скачивает файл и выдаёт вам его содержимое для последующего анализа.
Не занудствую, просто пытаюсь понять, не упускаю ли я чего-то.
Библиотека axios
возвращает мне response
, в котором я могу посмотреть response.data
. Это еще не файл. Этот response.data
- это же и есть html-код. Я могу прямо на уровне переменной его обработать и уже сразу один раз всё правильно записать и выкачать. Вас я понял немного иначе: я должен этот код сначала "as-is" записать в текстовый файл, потом считать оттуда, проанализировать, потом отредактировать и выкачать. Немного разные подходы, и я пытаюсь понять, правильно ли я Вас понял и если да, то почему второе лучше первого.
Вас я понял немного иначе: я должен этот код сначала "as-is" записать в текстовый файл, потом считать оттуда, проанализировать, потом отредактировать и выкачать.
Нет, конечно, для того чтобы проанализировать содержимое, записывать его в файл не нужно.
Библиотека axios возвращает мне response, в котором я могу посмотреть response.data
Всё верно. Для простоты мы ведь говорим, например, открыл файл по ссылке, тут имелось в виду тоже самое.
Используйте Хекслет по максимуму!
- Задавайте вопросы по уроку
- Проверяйте знания в квизах
- Проходите практику прямо в браузере
- Отслеживайте свой прогресс
Зарегистрируйтесь или войдите в свой аккаунт
С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.







