Что бы такое запарсить .. ??
Добрый день всем :)
Введение:
Не так давно столкнулся с ситуацией, которая в принципе натолкнула меня на написание этой программы (если это можно так назвать и вообще если можно назвать меня программистом)
Я большой любитель компьютерного железа и частенько закупаю в одном из желтых магазинов у дома с эмблемой инопланетянина. Но копаться на сайте мне порой лень либо времени нет - не беда , прайс лист есть , сортирую по ценнику и поехал скупать , но нет , с недавних пор dns убрали прайс листы , так же на сайте всячески используются подгруздки данных через js процедуры .
Решил найти в интернете парсер , вся информация которая есть либо 2018-19 года с вопросами "а что то не получается " или "больше не актуально , не работает" а так хотелось найти рабочий парсер на Python .
Не так давно я начал проходить тестирование UI интерфейсов и решил с помощью Selenium на Python реализовать парсер.
2 часа мучений и добиваемся такого результата :
Ссылка на код :
https://github.com/tagunzet/selenium_dnsshop_parser
Теперь вопрос , есть идея такая , создаю web сервис на Flask/Django и создаю микро-сервис который будет помогать пользователю подобрать технику по его параметрам .
Например мы хотим подобрать телефон , выбираем критерии к примеру :
Пол
Возраст
Для каких целей
Цена
И т.д.
Далее получаем список критериев на основе чего делаем подбор техники и советуем пользователю .
Плюсы сервиса : Если это будет кому то нужно кроме меня , то это поможет человеку без обращения за помощью к своим близким / дальним знакомым / родственникам получить помощь в подборе техники .
Конечно можно на первое время сделать подбор на основе ручного анализа (через словари к примеру)
А по мере развития уже автоматизировать процесс через обучение.
Ну как, стоит ли?

Selenium (и другие api для работы с безголовыми браузерами) - не самый лучший вариант для парсинга данных.
Причина очень простая, для стабильной работы нужно выделять на один экземпляр браузера - 1 ядро и от 1 Гб ОЗУ.
К примеру у меня есть ПК с 8 ядрами и 8 Гб ОЗУ, полная загрузка+рендер страницы занимает ~5 сек. В итоге я смогу получить максимум 1,6 страницы в секунду.
Для личных задач - проблем нет. Для массового сервиса - проблемы будут и ещё какие!
В тоже время на одном ядре я сейчас сделаю 35 запросов в секунду с парсингом html для удобной манипуляции с элементами DOM. Без рендера html (и без регулярок, сферический конь в вакууме) - на одном ядре могу сделать до 500-1000 запросов.
Если "пациент" генерирует сложные параметры сессии на основе данных брауера, то проще всего сначала получить эту сессию с помощью безголового браузера, а уже потом работать простыми post/get запросами.