Skip to content

Находит товары на avito.ru по ключевым словам

Notifications You must be signed in to change notification settings

Duff89/parser_avito

Repository files navigation

Avito Parser

Находит объявления на avito.ru по ключевым словам. Присылает уведомления в telegram и сохраняет результат в csv файл.

Другие парсеры Авито

Также есть бесплатные парсеры Авито от других разработчиков: https://dialoss.github.io/avito/

Обновление, версия 1.09

Добавлено

  • Фильтрация по гео. Если по Вашей ссылке мало объявлений, Авито добавит предложения из других регионов, что нам обычно не нужно. Скрипт будет проверять вхождение "Вашего адреса" в адрес в объявлении (пример: входит ли "краснодар" в "Краснодар ул. Авитолога 69", регистр здесь не важен), если не входит - уведомление не придет и в результаты это тоже не запишется. Данная опция не обязательна к заполнению.
  • Добавлена кнопка удаления текущего адреса, это удобно т.к. адреса длинные
  • Режим отладки: в данном режиме Вы будете видеть окно браузера. Полезно, чтобы понять, что идет не так
  • Разрешено изменение размеров окна
  • Обнаружения бана по IP при загрузке основной страницы (раньше только на отдельной странице объявления)
  • Другие мелкие доработки

Исправлено

  • Проблемы с отображением окна парсера, протестировано на Linux Mint и Windows 10
  • Ошибки связанные с кодировками
  • Ошибка при загрузке скрипта, если url был с русскими буквами и был внесен вручную в settings.ini
  • Ошибка при нажатии на кнопку "Стоп"
  • Скрипт иногда не видел кнопку "Далее"
  • Другие мелкие баги

Дополнительно

Очень Важно!!! устанавливать seleniumbase именно такой версии seleniumbase==4.16.2. Я знаю, что есть версия посвежее, но в ней есть баг, он связан с работой драйвера при переключении вкладок. Я в ближайшее время заведу issue на сайте разработчика, но там совсем непонятно чей именно это баг: seleniumbase, selenium, undetected_chromedriver или chrome, всё слишком завязано друг на друга.

Если Вы хотите, чтобы Avito Parser дальше развивался и оставался бесплатным - поддержите проект, на голом энтузиазме далеко не уедешь. Заранее спасибо! Поддержать можно по ссылке: https://yoomoney.ru/to/410014382689862 или простым переводом 2204 1201 0103 5539

Обновление, версия 1.08

  • Исправлена ошибка при работе с Chrome 115, обновите зависимости. При установке зависимостей используйте виртуальное окружение

Обновление, версия 1.07

  • Исправлены ошибки касательно минимальной и максимальной цены при запуске без графического интерфейса

Добавлено:

  • Новый графический интерфейс, теперь всё стало выглядеть более современно. Спасибо https://github.com/Genone22. Не забудьте обновить зависимости

Обновление, версия 1.06

Исправлены ошибки:

  • Дублирование объявления при отправке в telegram, если Вы нажимали кнопку test
  • Иногда не отправлялись логи в telegram, хотя данные были заполнены и кнопка test работала
  • Определение версии установленного браузера теперь переложена на Seleniumbase
  • Кодировки

Добавлено:

  • Переход на Seleniumbase (не забудьте обновить зависимости)
  • Ускорена работа
  • Улучшена стабильность
  • Проверка keywords теперь работает и для названия объявления (ранее проверялось только описание)
  • Обнаружение бана по IP со стороны Авито

Обновление, версия 1.05

Исправлены ошибки:

  • Ошибка при попытке прочитать описание (selector "[class*='item-description']")
  • Дублирование объявления при отправке в telegram
  • Иногда не работала кнопка test (тестирование отправки сообщений в telegram) без перезапуска скрипта
  • Другие мелкие баги

Добавлено:

  • С сайта парсится теперь больше информации: "Название", "Цена", "Ссылка", "Описание", "Просмотров", "Дата публикации", "Продавец"

  • Результат сохраняется в csv файл в папке result (более удобно работать)

  • Браузер использует случайный юзер-агент из файла user_agent_pc.txt, можете добавить большее количество самостоятельно (но это необязательно)

  • Сильно улучшена стабильность работы

  • Оставлена возможность запуска скрипта без графического интерфейса, все настройки задаются в файле settings.ini

  • Увеличено максимальное количество уже просмотренных сообщений до 5000 (хранится в файле viewed.txt и очищается автоматически при достижении лимита)

  • Увеличено окно вывода результата и переделан сам вывод

Обновление, версия 1.02

  • Исправлены старые ошибки и добавлены новые)
  • Добавлено поле минимальная цена, теперь можно указывать верхнюю и нижнюю границу цены
  • Исправлен баг, связанный с отсутствием viewed.txt
  • Улучшена стабильность работы
  • Добавлена возможность запуска скрипта без графического интерфейса, все настройки задаются в файле settings.ini. После нужно запустить parser_cls.py, таким образом, удобно запускать скрипт на удаленном сервере

Обновление, версия 1.01

  • Исправлена ошибка когда на страницы нет кнопки "Далее"
  • Добавлено поле максимальная цена, теперь можно искать не только бесплатные объявления

Youtube (как это работает)

Первая версия (создание самого парсера) https://youtu.be/pbzPkZcVOx0

Вторая версия (обзор нововведений: графический интерфейс, уведомления и как это работает) https://youtu.be/OjId94hYWnc

Установка

Для работы требуется Python 3.5+. Скопируйте проект и установите зависимости:

  pip install -r requirements.txt

У Вас также должен быть установлен браузер Google Chrome любой более менее свежей версии. Скрипт тестировался на версиях 108-112

Запустите AvitoParser.py

  python AvitoParser.py

Если Вам необходимо получать уведомления о новых объявлениях в telegram:

  • Перейдите в диалог с https://t.me/BotFather
  • Введите команду /newbot, придумайте name и username для бота
  • Скопируйте token и вставьте в первое поле скрипта
  • Перейдите в диалог с Вашим ботом по ссылке из прошлого шага, ссылка имеет формат: t.me/your_bot
  • Напишите @get_id_bot и скопируйте chat_id вашего диалога, вставьте его во второе поле данного скрипта
  • При нажатии на кнопку Test в скрипте, Вам должно прийти сообщение. Если нет, перезагрузите скрипт и попробуйте еще раз

Возможности

  • Удобное управление с помощью графического интерфейса
  • Проверка новых объявлений
  • Установка количества проверяемых страниц
  • Установка паузы между повторами
  • Уведомление в telegram как опция, также результат сохраняется в result/keyword*.json и выводится в окно
  • Хранение уже просмотренных объявлений, т.е. дубли игнорируются
  • Присылает только объявление, у которых цена = 0, рекламные объявления отсекаются
  • Установка слов-ключей, которые должны быть в описании объявления
  • Больше не нужно вводить версию Chrome, скрипт сам её определит (работает для Linux и Windows)

Проблемы

При обнаружении ошибок, ждем в https://github.com/Duff89/parser_avito/issues. Пожалуйста, указывайте не только ошибку, но и информацию о Вашей ОС, версии скрипта, тип и версию браузера и способ запуска. Для прямой связи с автором, пишите: [email protected]

Поддержка развития проекта

Ваша поддержка очень важна для дальнейшего и регулярного развития данного скрипта. Поддержать можно по ссылке: https://yoomoney.ru/to/410014382689862 или простым переводом 2204 1201 0103 5539. Заранее спасибо

Если понадобятся хорошие прокси для подобных скриптов, рекомендую: https://proxy6.net/?r=54545 (купон для скидки SdSq8wCwJA)