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

C++

Войти
Регистрация
Восстановить пароль
 
 
Kastaneda
Форумчанин
Эксперт С++
4514 / 2856 / 228
Регистрация: 12.12.2009
Сообщений: 7,249
Записей в блоге: 1
Завершенные тесты: 1
#1

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

19.07.2016, 19:54. Просмотров 788. Ответов 24
Метки нет (Все метки)

Привет

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

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

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

Да, знаю С++ тут не лучший выбор, но тут большая активность желающих обучаться людей.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.07.2016, 19:54     Реальная задача для реального проекта для желающих покодить
Посмотрите здесь:
Список вопросов по C++ для желающих проверить свои знания C++ C++
C++ Где взять исходники реального проекта
График реального времени для данных, поступающих из СОМ-порта (MFC) Visual C++
C++ WinAPI Программа для подсчета реального, пользовательского и системного времени работы какого-то ехе-файла
C++ Builder Создание шаблона для проекта
Компиляция С++ проекта для КПК C++
C++ Тема для дипломного проекта
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
casper007
67 / 67 / 22
Регистрация: 12.12.2013
Сообщений: 400
21.07.2016, 22:11     Реальная задача для реального проекта для желающих покодить #2
Можно мне попробовать? Очень хочу научиться работать в данном направлении.
ProgRoman
1 / 1 / 0
Регистрация: 04.12.2010
Сообщений: 65
22.07.2016, 10:46     Реальная задача для реального проекта для желающих покодить #3
Добрый день! Тоже хотел бы научиться работать в этом направлении!
Kastaneda
Форумчанин
Эксперт С++
4514 / 2856 / 228
Регистрация: 12.12.2009
Сообщений: 7,249
Записей в блоге: 1
Завершенные тесты: 1
22.07.2016, 13:43  [ТС]     Реальная задача для реального проекта для желающих покодить #4
casper007, ProgRoman, привет, я подумаю как можно разделить задачи, пока по работе большой загруз, не могу отвлечься.
SatanaXIII
Супер-модератор
Эксперт С++
5603 / 2637 / 242
Регистрация: 01.11.2011
Сообщений: 6,496
Завершенные тесты: 1
26.07.2016, 11:48     Реальная задача для реального проекта для желающих покодить #5
Цитата Сообщение от Kastaneda Посмотреть сообщение
я подумаю как можно разделить задачи
Ну выдать тз на маленькие конкретные функции. Типа: принимает такую-то строку, выдает такой-то объект.
Avazart
Эксперт С++
7121 / 5298 / 273
Регистрация: 10.12.2010
Сообщений: 23,444
Записей в блоге: 17
26.07.2016, 16:51     Реальная задача для реального проекта для желающих покодить #6
Цитата Сообщение от Kastaneda Посмотреть сообщение
Пример клиента на boost::asio скину, покажу как парсить HTML регулярками
Я бы так так не делал, это затратно по времени и морока.
boost::asio - все же плохо подходит для HTTP, да и парсинг регулярками не всегда подходит.
Обычно я использую C++Builder для этого или Qt, там все таки гуи и потоки есть и библиотеки для http.
Ну и если уж без фреймворков то все таки есть другие либы типа curl или Poco.

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

Не по теме:

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


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

Добавлено через 1 минуту
Цитата Сообщение от Avazart Посмотреть сообщение
Больше походит не на "научится" а на "рутину" которую самому лень делать
да не, тут просто попросили как "тыжпрограммиста". У человека реальный проект, но он такие вещи не кодит. И да, какие-то деньги все таки будут, сумму пока не знаю.
Avazart
Эксперт С++
7121 / 5298 / 273
Регистрация: 10.12.2010
Сообщений: 23,444
Записей в блоге: 17
26.07.2016, 16:54     Реальная задача для реального проекта для желающих покодить #8
Цитата Сообщение от Kastaneda Посмотреть сообщение
не настолько это и затратно по времени, для того, тобы получить тело HTTP ответа достаточно скопипастить готовый пример с бустовских примеров.
Это совсем не так. Задача будет сводится к написанию класса клиента для реализации HTTP протокола на основе буст-сокетов(долгое и нудное чтение RFC), а потом только сама задача ... а на кой оно надо?
Kastaneda
Форумчанин
Эксперт С++
4514 / 2856 / 228
Регистрация: 12.12.2009
Сообщений: 7,249
Записей в блоге: 1
Завершенные тесты: 1
26.07.2016, 16:56  [ТС]     Реальная задача для реального проекта для желающих покодить #9
Цитата Сообщение от Avazart Посмотреть сообщение
Задача будет сводится к написанию класса клиента для реализации HTTP протокола (долгое нужное чтение RFC), а потом только сама задача
Не, на столько крутой клиент тут не нужен. Тут просто игнорируешь все HTTP заголовки и читаешь контент в строку. Заранее известно, что код ответа будет 200, поэтому даже редиректы и пр. обрабатывать не надо.
Avazart
Эксперт С++
7121 / 5298 / 273
Регистрация: 10.12.2010
Сообщений: 23,444
Записей в блоге: 17
26.07.2016, 17:01     Реальная задача для реального проекта для желающих покодить #10
Цитата Сообщение от Kastaneda Посмотреть сообщение
Не, на столько крутой клиент тут не нужен. Тут просто игнорируешь все HTTP заголовки и читаешь контент в строку. Заранее известно, что код ответа будет 200, поэтому даже редиректы и пр. обрабатывать не надо.
Редерикты самая малая проблема. Банальная проблема с которой сталкиваешься каков размер пришедших данных? Т.е конец ответа....Или отправить POST или отправить POST multipart, SSL, энкодирование итп...

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

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

Добавлено через 8 минут
Цитата Сообщение от Kastaneda Посмотреть сообщение
У человека реальный проект, но он такие вещи не кодит.
Так что странно тянуть такое в реальный проект.
Цитата Сообщение от Kastaneda Посмотреть сообщение
могу пинать за плохой код.
Так что кого тут пинать...
Kastaneda
Форумчанин
Эксперт С++
4514 / 2856 / 228
Регистрация: 12.12.2009
Сообщений: 7,249
Записей в блоге: 1
Завершенные тесты: 1
26.07.2016, 22:26  [ТС]     Реальная задача для реального проекта для желающих покодить #13
Цитата Сообщение от Avazart Посмотреть сообщение
Так что странно тянуть такое в реальный проект.
А что странного? Когда будет сайт возвращать, допустим, gzip, тогда и надо клиента расширять, сейчас есть сайт, который возвращает заранее известный ответ (чистый HTML с кодом 200), вот с этим ответом и надо работать. Писать расширяемый скрапер никто не просил.
Тут тот самый случай, когда нужно исходить из реальной задачи, а не проектировать расширяемую систему.
Avazart
Эксперт С++
7121 / 5298 / 273
Регистрация: 10.12.2010
Сообщений: 23,444
Записей в блоге: 17
26.07.2016, 22:31     Реальная задача для реального проекта для желающих покодить #14
Цитата Сообщение от Kastaneda Посмотреть сообщение
А что странного? Когда будет сайт возвращать, допустим, gzip, тогда и надо клиента расширять, сейчас есть сайт, который возвращает заранее известный ответ (чистый HTML с кодом 200), вот с этим ответом и надо работать. Писать расширяемый скрапер никто не просил.
Тут тот самый случай, когда нужно исходить из реальной задачи, а не проектировать расширяемую систему.
В том то и дело что проектировать ничего не нужно, нужно просто использовать предназначенную для этого библиотеку, что с экономит время сейчас и в будущем.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.07.2016, 22:41     Реальная задача для реального проекта для желающих покодить
Еще ссылки по теме:
C++ Builder Отдельная папка для проекта
QTest для Widget проекта
Смена иконки для проекта C++ Builder
Идея для первого проекта C++
MakeFile для многофайлового проекта C++ Linux

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

Или воспользуйтесь поиском по форуму:
Kastaneda
Форумчанин
Эксперт С++
4514 / 2856 / 228
Регистрация: 12.12.2009
Сообщений: 7,249
Записей в блоге: 1
Завершенные тесты: 1
26.07.2016, 22:41  [ТС]     Реальная задача для реального проекта для желающих покодить #15
Цитата Сообщение от Avazart Посмотреть сообщение
нужно просто использовать предназначенную для этого библиотеку, что с экономит время сейчас и в будущем.
Я понимаю о чем ты говоришь, но реально нет необходимости. Встроить бустовкий HTTP клиент - это ctrl+C, ctrl+V. Буст уже прикручен, никаких доп. телодвижений не надо.

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

Не по теме:

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

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

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