Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
3 / 3 / 0
Регистрация: 20.06.2023
Сообщений: 64

Написать программу вытягивать картинки с одного сайта с помощью libcurl

12.08.2023, 14:45. Показов 1243. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написал прожку, которая вытягивает картинки с одного сайта с помощью libcurl. Суть в том, что либкурлу передаётся генерируемый url, в котором меняется числовой айдишник (с увеличением на 1), а также расширение файла (jpg, png, gif). Всё работает как надо, но меня смущает вот такая конструкция в main:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
int main()
{
    std::vector<std::string> extens = {".jpg", ".png", ".gif"};
 
    for (int n_img = 1; n_img < 25000; ++n_img)
    {
        char r = siteResHandler(n_img, extens[0]);
 
        if (r == 'e')
        {
            break;
        }
        else if (r == 'd')
        {
            continue;
        }
        else if (r == 'c')
        {
            for (int i = 1; i < 3; ++i)
            {
                char r1 = siteResHandler(n_img, extens[i]);
 
                if (r1 == 'e')
                {
                    break;
                }
                else if (r1 == 'd')
                {
                    break;
                }
                else if (r1 == 'c')
                {
                    continue;
                }
            }
        }
    }
 
}
e - это ошибка libcurl, я потом к ней прицеплю логгер
d - это "доступ запрещён", значит картинка не в публичном доступе и нужно переходить к следующей (к следующему айдишнику)
c - это значит 404 и нужно попробовать запрос с тем же адресом (айдишником), но с другим расширением файла; если все три расширения мимо - переходим к следующей итерации (т.е. к следующему айдишнику)

То есть выполняется цикл по айдишникам, но если в цикле вылезает 404 - начинаются попытки постучаться по другим расширениям файла, по каждому из трёх (точнее, по каждому из двух оставшихся).

Смущает меня вложенная секция с r1, которая повторяет главную секцию. Такое ощущение, что я сглупил алгоритмически. Как принято разруливать такие ситуации?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.08.2023, 14:45
Ответы с готовыми решениями:

Написать программу,которая будет вытягивать один шар из 5-ти белых и 3-х черных
Написать программу,которая будет вытягивать один шар из 5-ти белых и 3-х черных,События находит выпадение белого шара,количество таких...

Как вытягивать информацию с сайта?
WebRequest request = WebRequest.Create(&quot;https://vk.com&quot;); WebResponse response = request.GetResponse(); ...

Как вытягивать данные из сайта и записывать в базу данных?
Задали сделать програмку, которая будет вытягивать данные из сайта и записывать в базу данных, которая лежит на сервере(не локальном). Как...

22
3 / 3 / 0
Регистрация: 20.06.2023
Сообщений: 64
15.08.2023, 07:31  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Annemesski Посмотреть сообщение
switch который быстрее if-else
Откуда такая информация?
0
 Аватар для Annemesski
2689 / 1346 / 485
Регистрация: 08.11.2016
Сообщений: 3,734
15.08.2023, 09:47
Цитата Сообщение от SmallEvil Посмотреть сообщение
лучше два читаемых цикла
в упор не вижу что такого не читаемого в моем примере: подготовили данные и бросили на селектор для выполнения нужной ветки алгоритма, а вот как раз два цикла - это еще потрудиться надо чтобы средствами языка выразить их так, чтобы они целостно выглядели, плюс к тому частичный повтор кода тоже не добавляет читаемости, тут наоборот, когда глаз замылится еще поди воткни в какую ветку смотришь.
Цитата Сообщение от flexbin Посмотреть сообщение
Откуда такая информация?
от логики работы этих операторов и практики оптимизаций компиляторов которые, по возможности, приводят if-else к switch-case.
0
3 / 3 / 0
Регистрация: 20.06.2023
Сообщений: 64
15.08.2023, 13:28  [ТС]
Annemesski, спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.08.2023, 13:28

Возможно ли с помощью фреймворка взять с одного сайта список товаров, а потом залить на другие сайты?
Интересен вопрос про фреймворк - можно ли с помощью него взять с одного сайта список товаров скажем, а потом этот список распространить...

Не скачивается Libcurl 7.19.3 с официального сайта
Не качает libcurl 7.19.3 - http://curl.haxx.se/download/libcurl-7.19.3-win32-ssl-msvc.zip. Обновляют, или у них что-то не так?

Libcurl + QT Creator - Какую версию libcurl качать для Windows
Пытаюсь подружить Curl и QT Creator Подскажите пожалуйста какую версию libcurl качать для Windows и как вообще их подружить :) ...

Libcurl Получение страницы сайта с CloudFlare
Доброго времени суток! Интересует такой вопрос: Как получить код страницы сайта на котором стоит защита CloudFlare. Вот...

Как написать скрипт для уменьшения картинки и фиксации шапки сайта
Есть вот такой сайт https://businessasmission.com/. Хочу повторить его шапку, но у меня не выходит сделать это плавно. При задавании...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
23
Ответ Создать тему
Новые блоги и статьи
Сукцессия 20. Война автоботов. Делаем ставки. Лёд против "пш-пш!".
anaschu 11.07.2026
Битва ИИ в ризосфере: Как мы скрестили жесткие ОДУ, закон Фика и «подземный шантаж» Уважаемые коллеги! Хочу поделиться уникальным опытом ведения междисциплинарной компьютерной разработки. Прямо. . .
Сукцессия 19. Какие выводы я сделал из модели? Часть 2.Внутримикоризный стехиометрический буфер и хроно-дискретные зоны экспансии
anaschu 11.07.2026
Био-Инженерный Ликбез: Архитектура Модели Ризосферы Математический аппарат моделирования
Сукцессия 18. Какие выводы я сделал из войны грибов с деревьями? Часть 1- рассказ и немного про термины
anaschu 11.07.2026
Био-Инженерный Ликбез: Архитектура Модели Ризосферы Математический аппарат моделирования Система ОДУ описывает динамику изменения массы различных компонентов системы во времени. Ключевой. . .
Просветление в 5 секунд
kumehtar 10.07.2026
Андрей Веретенников выдал фразу недавно: "Вам не обязательно кем-то себя считать"
Эксперимент с картинкой-обложкой на CodinGame
Adler 10.07.2026
Решил на днях провести эксперимент. У меня есть аккаунт на CodinGame, ТОП-3 по РФ среди 2200 участников (в разделе соревнования по программированию ИИ-ботов). Там есть обложка, куда можно влепить. . .
GitDOS: Когда я решил скрестить MS-DOS, GitHub и Claude
MaGz GoLd 08.07.2026
Привет, Киберфорум! Хочу поделиться своим проектом, который, надеюсь, вас заинтересует. GitDOS — это веб-приложение, которое позволяет запускать DOS в браузере с тремя крутыми фичами: диски живут в. . .
Учебный мини "цифровой двойник" = (Сервер = Java + Flask_питон )+(3D = Гугловскаая 4T nvideo + google colab) +( WMS = Odoo на Docker)
anaschu 07.07.2026
Увидел в требованиях к вакансии создателя имитационных моделей связку (REst + Api + WMS + Anylogic + питон + 3D Nvideo), и решил посмотреть, что это такое. Из этого всего я работал более менее. . .
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал. Оно само - говорит. Кто слышит тот слышит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru