Форум программистов, компьютерный форум CyberForum.ru

Реальная задача для реального проекта для желающих покодить - C++

Восстановить пароль Регистрация
 
 
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4247 / 2779 / 219
Регистрация: 12.12.2009
Сообщений: 7,109
Записей в блоге: 1
Завершенные тесты: 1
19.07.2016, 19:54     Реальная задача для реального проекта для желающих покодить #1
Привет

Попросили сделать парсер сайта по-дружески, но у меня реально времени на него нет. Если кому-то интересно, могу двигать в нужном направлении и может, при желании, могу пинать за плохой код.
Что нужно сделать - парсер с HTTP клиентом. Пример клиента на boost::asio скину, покажу как парсить HTML регулярками (да, есть библиотеки, но думаю руками будет интересней). Могу архитектуру накидать еще.

Есть сайт, там есть форма, в форму вводятся данные, данные для следующих листбоксов тянутся аджаксом, после заполнения всех форм аджаксом тянутся другие данные. Нужно стянуть данные для всех возможных комбинаций всех листбоксов, при этом нужно сохранить сами листбоксы.

Тему не помещаю во фриланс, т.к. денег не предвидится, но вообще, могу уточнить, может там какая-то чисто символическая сумма будет.

Да, знаю С++ тут не лучший выбор, но тут большая активность желающих обучаться людей.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.07.2016, 19:54     Реальная задача для реального проекта для желающих покодить
Посмотрите здесь:

Компиляция С++ проекта для КПК C++
Список вопросов по C++ для желающих проверить свои знания C++ C++
C++ Builder Создание шаблона для проекта
Смена иконки для проекта C++ Builder
задача "Построить систему классов для описания Прямоугольника" для курсовой C++ Builder
C++ Builder Отдельная папка для проекта
График реального времени для данных, поступающих из СОМ-порта (MFC) Visual C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
casper007
61 / 61 / 21
Регистрация: 12.12.2013
Сообщений: 381
21.07.2016, 22:11     Реальная задача для реального проекта для желающих покодить #2
Можно мне попробовать? Очень хочу научиться работать в данном направлении.
ProgRoman
1 / 1 / 0
Регистрация: 04.12.2010
Сообщений: 65
22.07.2016, 10:46     Реальная задача для реального проекта для желающих покодить #3
Добрый день! Тоже хотел бы научиться работать в этом направлении!
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4247 / 2779 / 219
Регистрация: 12.12.2009
Сообщений: 7,109
Записей в блоге: 1
Завершенные тесты: 1
22.07.2016, 13:43  [ТС]     Реальная задача для реального проекта для желающих покодить #4
casper007, ProgRoman, привет, я подумаю как можно разделить задачи, пока по работе большой загруз, не могу отвлечься.
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5534 / 2568 / 234
Регистрация: 01.11.2011
Сообщений: 6,342
Завершенные тесты: 1
26.07.2016, 11:48     Реальная задача для реального проекта для желающих покодить #5
Цитата Сообщение от Kastaneda Посмотреть сообщение
я подумаю как можно разделить задачи
Ну выдать тз на маленькие конкретные функции. Типа: принимает такую-то строку, выдает такой-то объект.
Avazart
Нарушитель
6952 / 5190 / 256
Регистрация: 10.12.2010
Сообщений: 22,769
Записей в блоге: 17
26.07.2016, 16:51     Реальная задача для реального проекта для желающих покодить #6
Цитата Сообщение от Kastaneda Посмотреть сообщение
Пример клиента на boost::asio скину, покажу как парсить HTML регулярками
Я бы так так не делал, это затратно по времени и морока.
boost::asio - все же плохо подходит для HTTP, да и парсинг регулярками не всегда подходит.
Обычно я использую C++Builder для этого или Qt, там все таки гуи и потоки есть и библиотеки для http.
Ну и если уж без фреймворков то все таки есть другие либы типа curl или Poco.

Цитата Сообщение от Kastaneda Посмотреть сообщение
Есть сайт, там есть форма, в форму вводятся данные, данные для следующих листбоксов тянутся аджаксом, после заполнения всех форм аджаксом тянутся другие данные. Нужно стянуть данные для всех возможных комбинаций всех листбоксов, при этом нужно сохранить сами листбоксы.
Больше походит не на "научится" а на "рутину" которую самому лень делать
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4247 / 2779 / 219
Регистрация: 12.12.2009
Сообщений: 7,109
Записей в блоге: 1
Завершенные тесты: 1
26.07.2016, 16:52  [ТС]     Реальная задача для реального проекта для желающих покодить #7

Не по теме:

Avazart, согласен, просто это мой повседневный инструментарий, да и не настолько это и затратно по времени, для того, тобы получить тело HTTP ответа достаточно скопипастить готовый пример с бустовских примеров.


2all, блин, совсем нет времени, выходные пробухал был занят, в будни даже 10 минут выделить не могу. Вот если бы кто-то захотел себя попробовать в роли раздающего задачи, я б суть за пару минут в личку объяснил...

Добавлено через 1 минуту
Цитата Сообщение от Avazart Посмотреть сообщение
Больше походит не на "научится" а на "рутину" которую самому лень делать
да не, тут просто попросили как "тыжпрограммиста". У человека реальный проект, но он такие вещи не кодит. И да, какие-то деньги все таки будут, сумму пока не знаю.
Avazart
Нарушитель
6952 / 5190 / 256
Регистрация: 10.12.2010
Сообщений: 22,769
Записей в блоге: 17
26.07.2016, 16:54     Реальная задача для реального проекта для желающих покодить #8
Цитата Сообщение от Kastaneda Посмотреть сообщение
не настолько это и затратно по времени, для того, тобы получить тело HTTP ответа достаточно скопипастить готовый пример с бустовских примеров.
Это совсем не так. Задача будет сводится к написанию класса клиента для реализации HTTP протокола на основе буст-сокетов(долгое и нудное чтение RFC), а потом только сама задача ... а на кой оно надо?
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4247 / 2779 / 219
Регистрация: 12.12.2009
Сообщений: 7,109
Записей в блоге: 1
Завершенные тесты: 1
26.07.2016, 16:56  [ТС]     Реальная задача для реального проекта для желающих покодить #9
Цитата Сообщение от Avazart Посмотреть сообщение
Задача будет сводится к написанию класса клиента для реализации HTTP протокола (долгое нужное чтение RFC), а потом только сама задача
Не, на столько крутой клиент тут не нужен. Тут просто игнорируешь все HTTP заголовки и читаешь контент в строку. Заранее известно, что код ответа будет 200, поэтому даже редиректы и пр. обрабатывать не надо.
Avazart
Нарушитель
6952 / 5190 / 256
Регистрация: 10.12.2010
Сообщений: 22,769
Записей в блоге: 17
26.07.2016, 17:01     Реальная задача для реального проекта для желающих покодить #10
Цитата Сообщение от Kastaneda Посмотреть сообщение
Не, на столько крутой клиент тут не нужен. Тут просто игнорируешь все HTTP заголовки и читаешь контент в строку. Заранее известно, что код ответа будет 200, поэтому даже редиректы и пр. обрабатывать не надо.
Редерикты самая малая проблема. Банальная проблема с которой сталкиваешься каков размер пришедших данных? Т.е конец ответа....Или отправить POST или отправить POST multipart, SSL, энкодирование итп...

Можно делать влоб "без крутости" но это нифига не модифицируемо а учитывая что сайты меняют html- код страниц в лучшем случае каждый год-полгода - не дальновидно, потом фиг разберешься.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4247 / 2779 / 219
Регистрация: 12.12.2009
Сообщений: 7,109
Записей в блоге: 1
Завершенные тесты: 1
26.07.2016, 17:10  [ТС]     Реальная задача для реального проекта для желающих покодить #11
Цитата Сообщение от Avazart Посмотреть сообщение
Редерикты самая малая проблема. Банальная проблема с которой сталкиваешься каков размер пришедших данных? Т.е конец ответа....Или отправить POST или отправить POST multipart, SSL, энкодирование итп...
не, там все гораздо проще - простой GET, в header добавляешь Connection:close и конец данных определяется тупо по EOF.

Цитата Сообщение от Avazart Посмотреть сообщение
Можно делать влоб "без крутости" но это нифига не модифицируемо а учитывая что сайты меняют html- код страниц в лучшем случае каждый год-полгода - не дальновидно, потом фиг разберешься.
Тут просто регулярки нужно будет поправить и все. Т.е. всё будет заточено под один конкретный сайт, делать мега универсальный скрапер необходимости пока точно нет.
Avazart
Нарушитель
6952 / 5190 / 256
Регистрация: 10.12.2010
Сообщений: 22,769
Записей в блоге: 17
26.07.2016, 21:42     Реальная задача для реального проекта для желающих покодить #12
Цитата Сообщение от Kastaneda Посмотреть сообщение
не, там все гораздо проще - простой GET, в header добавляешь Connection:close и конец данных определяется тупо по EOF.
Который сайт может смело проигнорировать, некоторые сайты вообще только с сжатом состоянии контент высылают.
Да и как бы это все костыли, и изначально это то "как не надо делать".

Добавлено через 8 минут
Цитата Сообщение от Kastaneda Посмотреть сообщение
У человека реальный проект, но он такие вещи не кодит.
Так что странно тянуть такое в реальный проект.
Цитата Сообщение от Kastaneda Посмотреть сообщение
могу пинать за плохой код.
Так что кого тут пинать...
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4247 / 2779 / 219
Регистрация: 12.12.2009
Сообщений: 7,109
Записей в блоге: 1
Завершенные тесты: 1
26.07.2016, 22:26  [ТС]     Реальная задача для реального проекта для желающих покодить #13
Цитата Сообщение от Avazart Посмотреть сообщение
Так что странно тянуть такое в реальный проект.
А что странного? Когда будет сайт возвращать, допустим, gzip, тогда и надо клиента расширять, сейчас есть сайт, который возвращает заранее известный ответ (чистый HTML с кодом 200), вот с этим ответом и надо работать. Писать расширяемый скрапер никто не просил.
Тут тот самый случай, когда нужно исходить из реальной задачи, а не проектировать расширяемую систему.
Avazart
Нарушитель
6952 / 5190 / 256
Регистрация: 10.12.2010
Сообщений: 22,769
Записей в блоге: 17
26.07.2016, 22:31     Реальная задача для реального проекта для желающих покодить #14
Цитата Сообщение от Kastaneda Посмотреть сообщение
А что странного? Когда будет сайт возвращать, допустим, gzip, тогда и надо клиента расширять, сейчас есть сайт, который возвращает заранее известный ответ (чистый HTML с кодом 200), вот с этим ответом и надо работать. Писать расширяемый скрапер никто не просил.
Тут тот самый случай, когда нужно исходить из реальной задачи, а не проектировать расширяемую систему.
В том то и дело что проектировать ничего не нужно, нужно просто использовать предназначенную для этого библиотеку, что с экономит время сейчас и в будущем.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4247 / 2779 / 219
Регистрация: 12.12.2009
Сообщений: 7,109
Записей в блоге: 1
Завершенные тесты: 1
26.07.2016, 22:41  [ТС]     Реальная задача для реального проекта для желающих покодить #15
Цитата Сообщение от Avazart Посмотреть сообщение
нужно просто использовать предназначенную для этого библиотеку, что с экономит время сейчас и в будущем.
Я понимаю о чем ты говоришь, но реально нет необходимости. Встроить бустовкий HTTP клиент - это ctrl+C, ctrl+V. Буст уже прикручен, никаких доп. телодвижений не надо.

Добавлено через 1 минуту

Не по теме:

хотя у меня в проекте (как раз, где нужна готовая либа) все HTTP дела на boost::asio, но тут прихоть заказчика, не нужно ему ничего другого. Я к boost::asio уже привык, кучу своих велосипедов для HTTP уже написал

Avazart
Нарушитель
6952 / 5190 / 256
Регистрация: 10.12.2010
Сообщений: 22,769
Записей в блоге: 17
26.07.2016, 22:52     Реальная задача для реального проекта для желающих покодить #16
Цитата Сообщение от Kastaneda Посмотреть сообщение
Я понимаю о чем ты говоришь, но реально нет необходимости.
Нет необходимости делать правильно?

Ну ваш изврат и изврат заказчика это ваши проблемы, я к тому что тема вроде создавалась что бы "учиться".
Тут как бы сразу вопрос если учится то если не на готовых либах которые специально предназначены, то почему на таком монстре как boost, а не на основах... на WinSocks к примеру (у меня на нем тоже есть пару велосипедов, правда не для реальных проектов а для студенческих)
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
12080 / 6941 / 782
Регистрация: 27.09.2012
Сообщений: 17,227
Записей в блоге: 2
Завершенные тесты: 1
26.07.2016, 22:54     Реальная задача для реального проекта для желающих покодить #17
Цитата Сообщение от Avazart Посмотреть сообщение
я к тому что тема вроде создавалась что бы "учиться".
А в заголовке написано
для желающих покодить
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4247 / 2779 / 219
Регистрация: 12.12.2009
Сообщений: 7,109
Записей в блоге: 1
Завершенные тесты: 1
26.07.2016, 22:57  [ТС]     Реальная задача для реального проекта для желающих покодить #18
Цитата Сообщение от Avazart Посмотреть сообщение
то почему на таком монстре как boost, а не на основах... на WinSocks к примеру.
Если бы я обещал научить сетевому программированию, то да, нужно было бы начать с основ. А так бустовский клиент - это быстрый и простой способ получить рабочий HTTP клиент без усилий. Как бы сетевого программирования тут не будет, задача сводится к другому.
Avazart
Нарушитель
6952 / 5190 / 256
Регистрация: 10.12.2010
Сообщений: 22,769
Записей в блоге: 17
26.07.2016, 23:00     Реальная задача для реального проекта для желающих покодить #19
Цитата Сообщение от Croessmah Посмотреть сообщение
А в заголовке написано
Тогда расшифруйте что это значит?
Ибо я понимаю только две мотивации деньги и/или (положительный)опыт.

Цитата Сообщение от Kastaneda Посмотреть сообщение
это просто быстрый и просто способ получить рабочий HTTP клиент без усилий.
Нет самый простой использовать либу для HTTP, а не уровень сокетов.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.07.2016, 23:00     Реальная задача для реального проекта для желающих покодить
Еще ссылки по теме:

C++ WinAPI Программа для подсчета реального, пользовательского и системного времени работы какого-то ехе-файла
QTest для Widget проекта
C++ Тема для дипломного проекта
MakeFile для многофайлового проекта C++ Linux
C++ Где взять исходники реального проекта

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

Или воспользуйтесь поиском по форуму:
Kastaneda
26.07.2016, 23:00  [ТС]     Реальная задача для реального проекта для желающих покодить
  #20

Не по теме:

Цитата Сообщение от Avazart Посмотреть сообщение
Нет необходимости делать правильно?
правильно это делать на питоне

Yandex
Объявления
26.07.2016, 23:00     Реальная задача для реального проекта для желающих покодить
Ответ Создать тему
Опции темы

Текущее время: 08:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru