Парсер-бот на python — как оптимизировать?

Привет!

Пишу парсеры на python+selenium+chromdriver для автоматического заказа товаров на сайтах типа mvideo, citilink и т.д.

Столкнулся с тем, что:
1) сайты перестают грузиться, когда парсер сделал довольно много заказов - возможно, банят автоматически сервисами типа botscanner
2) очень трудно сделать универсальный парсер для нескольких сайтов
3) малейшее изменение веб-разметки приводит к необходимости редактирования парсера (поменяли теги, переместили искомый элемент в новый блок и т.д.)

Мои вопросы:
1)Есть ли способы сделать более универсальный парсер?
2) Как обходить искусственные тормоза моего парсера со стороны сайтов? Прокси не помогают. Это самая большая проблема, некоторые сайты после примерно 50 заказов (не подряд, а каждый день по одному-два) просто очень долго грузятся
  • Вопрос задан
  • 1394 просмотра
Пригласить эксперта
Ответы на вопрос 2
@nirvimel
1) Все дело в искусстве (именно так) написания XPath-выражений. Одно дело просто валидный (для конкретного документа) xpath, а другое дело xpath нечувствительный (до определенных пределов) к изменениям верстки страницы.
2) Вести логи. Отслеживать все принимаемые от сервера заголовки, коды ответов, временные метки, ну и сами возвращаемые страницы. Далее анализировать собранные логи, пытаться выявить какие-то закономерности. Внимательно рассмотреть (в логах) тот момент, когда сервер еще отдавал нормальные ответы, после чего начал ругаться. Что произошло изменилось в этот момент? Сколько запросов было оправлено пере этим a) в определенную сессию; b) с определенного User-Agent; c) с определенно ip; d) за предшествующую минуту/час/сутки ? Какое-то ровное число? 100/1000/1000000 ? И делать из этого свои выводы относительно формальных критериев для бана на сервере.
Ответ написан
un1t
@un1t
> некоторые сайты после примерно 50 заказов

что это значит? ваш бот заказывает товары в магзинах?
Ответ написан
Ваш ответ на вопрос

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

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