PHP vs GOLANG, парсер, на чем писать?

Добрый день.

Вопрос к знатокам.

Стоит задача - написание довольно таки толстого парсера веб-страниц.
Задача парсера будет состоять в парсинге сайтов-конкурентов, анализированием цен, приведением цен к средней, записи средней цены для товаров на своем ресурсе.

Парсер будет находиться на отдельном поддомене, иметь форму входа в личный кабинет.
В личном кабинете будет выводиться различная статистика, протокол работы и прочая информация.

На выбор 2 ЯП, php и golang.

Собственно сам вопрос, на чем экономически выгоднее писать подобный парсер (в дополнении с небольшим веб-интерфейсом).
  • Вопрос задан
  • 1897 просмотров
Пригласить эксперта
Ответы на вопрос 5
t-alexashka
@t-alexashka
Сразу пишу legacy код
Экономичнее на том - на чем удобнее тебе самому. Что лучше знаешь, на том и пиши.
Ответ написан
Комментировать
dasha_programmist
@dasha_programmist
ex Software Engineer at Reddit TS/React/GraphQL/Go
Если выберешь Go то посмотри в сторону пакета goquery - jquery селекторы на go. Но мне кажется удобнее всего на js (node 8), в мастер-слэйв режиме, т.е. 1 инстанс рулит/балансирует, другие инстансы-воркеры занимаются непосредственно парсингом.
Ответ написан
Комментировать
sayber
@sayber Куратор тега PHP
Да, я программирую на PHP и еще асинхронно!
Я бы выбрал Go. У него множество плюсов для быстрой обработки, многопоточность и т.д.
Небольшое выступление, можно посмотреть https://www.youtube.com/watch?v=MitOZ3Bx6QE (не реклама)
В основном первые 5-7 минут
Просто из практики в реальной работе, о скорости.
Ответ написан
Комментировать
Taraflex
@Taraflex
Ищу работу. Контакты в профиле.
Без разницы. Все равно большая часть времени работы приложения будет уходить на загрузку страниц.
Ответ написан
Комментировать
polarlord
@polarlord
Как уже выше заметили - основную часть времени программа будет простаивать, т.е. ожидать ответ (загрузка страниц). В общем flow это время будет несоизмеримо больше чем обработка ответа. Поэтому оптимальнее здесь использовать асинхронную сетевую модель, когда вы отправляете массу запросов, а потом по событиям уже будут "дёргаться" обработчики ответа. Это гораздо экономнее нежели многопоточный подход, даже если это будут green threads Go. Ведь в последнем случае будет создано множество потоков с запросами, которые будут простаивать 90% времени своей работы в ожидании ответа.
Почему такое внимание уделяется времени простаивания (ожидания ответа) ? Дело в том, что только в идеальных условиях вы получаете ответ на запрос максимально быстро. В реальных же условиях далеко не всё так безоблачно. К тому же не забывайте про использование прокси, иначе вас непременно будут банить. А использование прокси увеличивает время ожидания ответа весьма значительно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы