parser_avito icon indicating copy to clipboard operation
parser_avito copied to clipboard

Запуск сразу нескольких парсеров (обсуждение)

Open Nouspass opened this issue 3 months ago • 17 comments

Image

Создал 3 копии парсера и запустил разом с разными настройками, для трех разных тг ботов, ну у них всех один единый mobileproxy. Не будет ли из-за этого возникать конфликтов?

Nouspass avatar Sep 11 '25 01:09 Nouspass

Вероятность блокировки повышается, лучше 1 парсинг за раз

darkvovich avatar Sep 11 '25 07:09 darkvovich

@Nouspass кратно повышается шанс блокировки и рушит всю логику работы. Одна копия к примеру меняет IP, другая парсит в это же время - последствия явно будут. Варианта 2:

  1. Использовать для каждой копии свой прокси
  2. Использовать 1 копию и в ней все ссылки А зачем использовать 3 копии? Чего не хватает?

Duff89 avatar Sep 11 '25 08:09 Duff89

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

uka1992 avatar Sep 11 '25 09:09 uka1992

В таком случае можно просто подождать след. версию, там будет такая возможность из коробки

Duff89 avatar Sep 11 '25 09:09 Duff89

@Duff89 Нашёл решение для себя, создал маленькую программу которая по очереди запускает парсеры с нужными настройками, было бы клёво увидеть что то подобное в следующих версиях. Условно что бы парсер прогонял сначала одни ссылки и они шли в один excel и тг бота, потом вторые и они шли в другой и тд. Ну или по очереди прогонял один файл с настройками, потом второй, и тд. И так по круг, Если это конечно покажется вам хороший идей для будущих обновлений.

Nouspass avatar Sep 11 '25 17:09 Nouspass

@Duff89 Ну и да, вы были правы, сегодня пол дня работал только один парсер и всё как часики

Nouspass avatar Sep 11 '25 17:09 Nouspass

Скорее всего в след. версии будет так:

  1. появится опция типа "одноразовый запуск". Логика: все ссылки отработали - программа закрылась и написала в телегу (если указана конечно)
  2. парсинг каждой ссылки будет идти в отдельный свой Excel файл, причем уже в любом режиме (или тоже вынести как опцию?) UPDATE: будет как опция
  3. Отдельный тг для каждой ссылки пока не буду делать, это будет в уже большом обновлении (явно не так быстро), там появятся профили для каждой ссылки, т.е. настройки будут уже не глобальные, а для каждой ссылки свои Принимаю все пожелания и советы на данный счет, т.к. до конца пока сам не решил

Duff89 avatar Sep 11 '25 17:09 Duff89

@Duff89 Как же офигенно видеть от вас такую отдачу) Надеюсь многие подключаться к этом обсуждению, у вас очень хороший проект, который живет и дышит благодаря вам. Насчет второго пункта, я думаю лучше это сделать как опцию, иногда нужно парсить сразу несколько ссылок ну собирать информацию в один кластер скажем так. Ещё была идея сделать среднее значение в excel в таблицах по цене, условно за последние (100...1000...5000...) отпарсенных объяв, ну что бы это так же отправлялось в тг как только выставленный порог условно в 1000 объявлений будет отпарсен и закреплялось в том же боте отдельным сообщений (Средняя цена: 20534 рублей), это бы помогло в реальном времени отслеживать рынок по выбранному товару. Ну если прям совсем улететь во влажные мечты то ещё и его низы и хаи так скажем, ну тут я вообще не представляю как это реализовать можно. Ещё волнует вопрос частых блокировок, ближе к вечеру и по сей момент все ip улетают в бан и парсит прям с трудом, раз в пол часа если так можно выразиться бэкдор пробивает и отпарсит, и по новой выдаёт 429, иногда по несколько часов это длиться, иногда все работает идеально, хотелось бы понять почему так происходит, хотя парсит один парсер по двум ссылкам с перерывом в 60 секунд и перерывом в 10 секунд между ссылками. А так пожеланий ещё море, позже попытаюсь их грамотно изложить. Ещё раз огромное вам спасибо за ваши труды!

Nouspass avatar Sep 12 '25 01:09 Nouspass

  1. появится опция типа "одноразовый запуск". Логика: все ссылки отработали - программа закрылась и написала в телегу (если указана конечно)
  • то что надо!
  1. парсинг каждой ссылки будет идти в отдельный свой Excel файл, причем уже в любом режиме (или тоже вынести как опцию?)

если будете внедрять то только через отдельную опцию

  1. Отдельный тг для каждой ссылки пока не буду делать, это будет в уже большом обновлении (явно не так быстро), там появятся профили для каждой ссылки, т.е. настройки будут уже не глобальные, а для каждой ссылки свои> Принимаю все пожелания и советы на данный счет, т.к. до конца пока сам не решил
  • не самая необходимая опция

uka1992 avatar Sep 12 '25 07:09 uka1992

@Nouspass Про средние цены, хаи и прочее - это уже ближе к аналитике. Сейчас главная задача сделать стабильно работающий парсер с развитым функционалом, а когда уже делать будет нечего - тогда и можно и аналитику подключать) По стабильности приоритет всегда №1, кстати заметил, что лучше не брать прокси с крупными городами (СПБ, Москва), сейчас к примеру у меня Выборг и блокировок стало гораздо меньше, но это чисто субъективно

Duff89 avatar Sep 12 '25 08:09 Duff89

@Nouspass сейчас к примеру у меня Выборг и блокировок стало гораздо меньше, но это чисто субъективно

Не, это вряд ли - я начала тоже выбор выбрал, но потом из-за параллельного запуска его стали тоже блочить и нормально работает другой регион. Но вот есть подозрение что yota оператор лучше))

darkvovich avatar Sep 12 '25 11:09 darkvovich

Кстати, у меня вопрос про блокировки:

  1. там же часто Авито предлагает просто нажать кнопку "Проверить" и пройти капчу - может можно это тоже включить как-то? чтобы не меняло айпи хаотично а пробовало пройти ее? тем более есть сервисы для прохождения капчи которую Авито использует GeeTest: https://habr.com/ru/articles/903096/ https://rucaptcha.com/h/how-to-bypass-geetest-captcha

  2. При попадание в жесткую блокировку когда не помогает смена айпи (более 10 раз) и смена оборудования (2-3 раза) - но помогает: "отдохнуть 1-2часа" и сменить оборудование - есть мысли что можно еще сменить в fingerprint браузера? явно что-то они видят

darkvovich avatar Sep 12 '25 11:09 darkvovich

  1. там же часто Авито предлагает просто нажать кнопку "Проверить" и пройти капчу - может можно это тоже включить как-то? чтобы не меняло айпи хаотично а пробовало пройти ее?

Спорный вопрос, но что-то мне подсказывает, что проще сменить ip, раз мы уже все равно используем прокси. Если бы было ограниченное кол-во айпишников у нас - то да, пришлось бы делать однозначно

Duff89 avatar Sep 12 '25 13:09 Duff89

2. При попадание в жесткую блокировку когда не помогает смена айпи (более 10 раз) и смена оборудования (2-3 раза) - но помогает: "отдохнуть 1-2часа" и сменить оборудование - есть мысли что можно еще сменить в fingerprint браузера? явно что-то они видят

Автоматическая смена оборудования тоже будет, скорее всего через пару версий. Это 100%

Duff89 avatar Sep 12 '25 13:09 Duff89

@Duff89 Идея появилась, как реализовать парсинг каждой ссылки, возможно ли настроить парсинг, что бы он прогонял несколько конфигов. Условно у меня есть пара конфигов (config.toml, config1.toml, Config2.toml и тд.) И в каждом из них свои настройки tg_chat_id и tg_token, свои urls и тд. Ну и для каждого конфига что бы создавался свой xclc в result, условно в папке result (result, result1, result2 и тд.)

Nouspass avatar Sep 16 '25 00:09 Nouspass

@Duff89 Идея появилась, как реализовать парсинг каждой ссылки, возможно ли настроить парсинг, что бы он прогонял несколько конфигов. Условно у меня есть пара конфигов (config.toml, config1.toml, Config2.toml и тд.) И в каждом из них свои настройки tg_chat_id и tg_token, свои urls и тд. Ну и для каждого конфига что бы создавался свой xclc в result, условно в папке result (result, result1, result2 и тд.)

у меня так настроено в докере на synology ,3 .toml , и 3 папки result, все работает нормально на одни прокси

sashachernov9292-ui avatar Sep 18 '25 07:09 sashachernov9292-ui

@Nouspass кратно повышается шанс блокировки и рушит всю логику работы. Одна копия к примеру меняет IP, другая парсит в это же время - последствия явно будут. Варианта 2:

  1. Использовать для каждой копии свой прокси
  2. Использовать 1 копию и в ней все ссылки А зачем использовать 3 копии? Чего не хватает?

Конфликт cookies и сессий - Самая критичная проблема. Если три экземпляра используют один IP (mobileproxy) и обращаются к Avito, то cookies могут перезаписываться друг другом. Анализируя твой код get_cookies.py, видно, что каждый экземпляр запускает Playwright для получения cookies через метод get_cookies(). При одновременной работе сессии могут конфликтовать.

Превышение лимита concurrent connections - Mobile proxy обычно поддерживают до 100 одновременных подключений, но при агрессивном парсинге тремя экземплярами может быть достигнут лимит.

Блокировка по rate limiting - Три парсера с одного IP будут создавать тройную нагрузку на Avito, что повышает риск бана. В твоем коде есть механизм смены IP через change_ip() в parser_cls.py, но он будет менять IP для всех трех экземпляров одновременно.​

Изоляция сессий по файлам - Добавь уникальный instance_id для каждого парсера, чтобы cookies сохранялись в отдельные файлы (cookies_bot1.json, cookies_bot2.json, cookies_bot3.json).​

Раздельные логи - В твоем коде loguru пишет в logs/app.log. Сделай отдельные лог-файлы для каждого экземпляра.​

Увеличенные паузы - Поскольку три экземпляра работают с одного IP, увеличь pausebetweenlinks и pausegeneral в 2-3 раза, чтобы распределить нагрузку во времени.​

Playwright session isolation - В get_cookies.py каждый вызов PlaywrightClient создает новый браузерный контекст, что хорошо для изоляции. Но убедись, что cookies не кэшируются глобально.

Твоя текущая архитектура уже имеет некоторую изоляцию (отдельные requests.Session() для каждого экземпляра), но критично добавить изоляцию файлов cookies и баз данных по instance_id. Также рассмотри возможность ротации IP через API прокси с задержкой между сменами для разных экземпляров.

eminsk avatar Oct 13 '25 20:10 eminsk