Написать программу (ПК, Win) парсинга и фильтрации товаров aliexpress

Цена договорная • электронные деньги
22 октября 2018, 20:42 • 8 откликов • 86 просмотров
Требуется написать программу (ПК, Win) парсинга и фильтрации товаров aliexpress

Уважаемые господа Программисты!
В откликах/комментариях к данному проекту пишите пожалуйста ваши вопросы/уточнения по ТЗ.
Если по ТЗ вам все понятно, то присылайте ваше предложение по срокам и цене.

!!!Пожалуйста НЕ предлагайте связаться с вами в мессенджерах!!!
Вносить всех претендентов в Контакты месенджеров я не хотел бы.

Эскиз ТЗ:
Если вы считаете, что какую-то из опций проще реализовать другим образом, не стесняйтесь сообщить об этом.

Для пользователя данная программа является альтернативным браузером с возможностью фильтрации списка товаров на странице Алиэкспресса.

Алгоритм взаимодействия пользователя с программой.
Окно программы внешне выглядит как браузер (возможно с упрощенным интерфейсом)

В поле адресса пользователь вводит адрес е-магазина https://www.aliexpress.com (или одну из национальных версий https://ru.aliexpress.com https://pt.aliexpress.com https://pl.aliexpress.com )

На главной странице (см.

) пользователь может:
Поле 1 выбрать страну доставки, валюту, язык
2 войти в свою корзину, лист желаний, личный кабинет
3 перейти к категории товара
4 начать поиск по названию товара

Произведя действия 3 или 4 пользователь получает список товаров (страницы выдачи поиска товаров) соответствующий 3 или 4 .

Данный список пользователь может отфильтровать средствами 5 и 6 самого сайта (см.
).

Там же пользователь может переключить вид List (1х48 товаров в одну колонку) / Gallery (4х12). Результирующий отсортированный программой список товаров (страницы выдачи поиска товаров) должен иметь аналогичный вид List (1хN) / Gallery (4хN). N пользователь выбирает на панели фильтров программы.

До сих пор программа для пользователя является лишь браузером.

Далее находясь на странице списка товаров пользователь может в плавающей панели инструментов программы выбрать

Фильтры (плавающая панель с треугольником “свернуть” и желательно растягиваемая вертикально и горизонтально):

Чекбокс “показывать цену за 1шт если в лоте много” (программа добавляет в http адрес выдачи &isUnitPrice=X (X=y или n)) по умолчанию активен &isUnitPrice=y

Поле “кол-во товаров в лоте от X и до Y” (программа добавляет в http адрес выдачи &minQuantity=X&maxQuantity=Y) по умолчанию неактивны &minQuantity=n&maxQuantity=n

Чекбокс «очистить кукис» по умолчанию неактивен

Расширяемое вертикально пропорционально размеру панели Поле “Исключить слова”- исключить из выдачи товары в описании которых есть указанные слова.
Расширяемое вертикально пропорционально размеру панели Поле “Обязательные слова”- исключить из выдачи товары в описании которых отсутствуют указанные слова.

Радиокнопка “сортировать по мин. цене” (минимальная цена выше в списке)
Радиокнопка “сортировать по макс. цене” (если в карточке товара диапазон цен, за цену для фильтра принимается максимальная)(минимальная цена выше в списке)
Радиокнопка “сортировать по цене включая доставку”(минимальная цена выше в списке) цену доставки брать со страницы товара.
Радиокнопка «не сортировать по цене» по умолчанию активна
Радиокнопки кол-во предложений отфильтрованной выдачи на страницу 48, 96, 192, все. По умолчанию 192.

Кнопка «Отфильтровать»
Кнопка “Поблагодарить авторов” - ссылка ведущая на сайт.
Кнопка “Справка”- ссылка ведущая на сайт.

После нажатия кнопки «Отфильтровать» программа добавляет в http адрес страницы выдачи поиска товаров &isUnitPrice=X и &minQuantity=X&maxQuantity=Y ,
перезагружает страницу и парсит с нее карточки товаров.

Одновременно «быстрыми прямыми запросами» (не через браузер) парсит остальные 99 страниц (кукис Алиэкспресса из браузера отправляется с запросом, если неактивен соответствующий чекбокс). 100 страниц по 48 товаров это максимум поисковой выдачи Алиэкспресс

При любой активной радиокнопке кроме “сортировать по цене включая доставку” парсятстся только эти 100 сраниц (без парсинга страниц каждого отдельного товара). Номер станицы указывается в hhtp адресе в явном виде. Если в выдаче поиска сформировалось меньше 100 страниц, то при попытке указать в hhtp адресе номер страницы больше последней существующей, в ответе все равно будет последняя существующая (можно это использовать как сигнал завершения парсинга. Запросы отправляются максимально быстро, а проверка на идентичность последних двух полученных ответов происходит параллельно. Как только получен повторяющийся ответ, запросы прекращаются и повторяющийся страницы отбрасываются).

Далее товары фильтруются и сортируются в соответствии с установками панели фильтров и выдаются в новой вкладке «браузера» в том же формате/виде как страницах выдачи поиска товаров (как будто пользователь произвел фильтрацию/сортировку товаров лишь фильтрами 5 или 6 на самом сайте Алиэкспресс)

При активной радиокнопке “сортировать по цене включая доставку”, если на странице выдачи поиска товаров по данному товару после цены не указано Free Shipping, то парсер запрашивает цену доставки на странице самого товара. Далее товары фильтруются и сортируются и выдаются аналогично предыдущему пункту, но с добавлением цены доставки и суммарной цены в полях тех товаров у которых не указано Free Shipping/Бесплатная доставка (Искать значение данного поля желательно не по тексту, а по значению true соответствующей переменной, т.к. на национальных сайта текст будет на соответствующем языке).

Пока производится парсинг/фильтрация/сортировка пользователю на панели фильтрации/сортировки демонстрируется индикатор «% выполненной работы».

Желательно чтобы фильтрация и хотя бы предварительная сортировка происходили параллельно с парсингом для минимизации времени ожидания клиента.

Получив отфильтрованную старицу выдачи поиска товаров пользователь может ее прокручивать, переходить на следующую страницу, открывать страницы товаров, покупать/класть товар в корзину, вобщем все как и на станице выдачи поиска товаров до сортировки.

Если пользователь нажмет кнопку «Отфильтровать» находясь не на старице выдачи поиска товаров, а например на странице конкретного товара, это не должно приводить с сбою программы/началу парсинга. Должна появляться при наведении курсора на кнопку «Отфильтровать» всплывающая подсказка «Сначала произведите поиск товаров по названию или выберете товары по Категории»

Меню “Настройки”
«Браузер представляется как:» выбор из популярных браузеров +поле ввода произвольного названия агента.

Программа может использовать либо свой встроенный браузер, либо один из уже установленных на компьютере.

Все вычисления/сортировка/фильтрация программа производит локально на ПК пользователя (Windows 64/32 10, 8, 7)

При парсинге многостраничной выдачи программа не должна занимать значительную часть памяти ПК.

Программа должна работать как в полноэкранном режиме так и в оконном.

Сложный интерфейс аля Windows Aero пока, на данном этапе, не требуется, вполне достаточно “классического”/упрощенного вида Хрома/Мозилы/ИЕ или даже можно старинный как в Win95, если это даст экономию времени/денег.

Все текстовые названия меню/кнопок разместить во внешнем файле в виде пар key-value (для упрощения перевода на другие языки)

Крайне желательно чтобы не требовалась инсталляция ни самой программы (вариант Portable), ни тем более инсталляция дополнительных библиотек/интерпретаторов/программных модулей (java, visual c, .NET и т.п.).

Если необходимы какие-либо модули/библиотеке их крайне желательно включить в ехе файл программы, но чтобы он не раздулся до Гб.

Жду ваших уточнений/комментариев и предложений по срокам и цене.
Файлы