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

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

12.08.2023, 14:45. Показов 1300. Ответов 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
2692 / 1349 / 485
Регистрация: 08.11.2016
Сообщений: 3,739
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
Ответ Создать тему
Новые блоги и статьи
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru