Skip to content

Парсинг Авито с рассылкой в Telegram.

Notifications You must be signed in to change notification settings

Jagernau/Telegram_bot_avito_pars

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Описание:

Telegram_bot_avito_pars - приложение для поиска товаров на Авито подходящих по заданным параметрам и отправки ссылок на них в Telegram.

Платформа:

Python>=3.8; Beautifulsoup4

  • Для Linux и Termux собственно и написан скрипт hard_pars.
  • Полноценно боевое приложение будет с взаимодействием с Cron на Linux.
Актуальность:

На момент разработки и мной приложения 2022-07-29 версия HTML разметки Авито была актуальна. Прилжежение работает отлично, и я даже купил авто не без его помощи.

Что делает приложение:
  1. Ищет товар на Авито по заданным параметрам и фильтрам.
  2. Присылает ссылку на товар в Telegram бот;
  3. Сохраняет ссылки с датой и временем в файл links.txt;
  4. Проверяет что бы ссылки не повторялись, при каждом разе анализа товаров Авито, и по этому присылаются только появившиеся товары.

Запуск и использование:

  1. Склонируйте репозиторий: git clone https://github.com/Jagernau/Telegram_bot_avito_pars
  2. Зайдите в папку с приложением: cd Telegram_bot_avito_pars
  3. Лучше всего создайте песочницу для Python:
    • Если фанаты virtualenv: python<версия> -m virtualenv env
    • Активировать виртуальное окружение: source env/bin/activate
  4. Установите зависимости: pip install -r requirements.txt
  5. Создайте файл .env где будут хранится ваши сектретные данные:
    • TELEGRAM_TOKEN_BOT= ваш токен бота.
    • USER_CHAT_ID= ваш чат id телеграмма.
  6. Настроить конфигурацию бота под себя в файле config.py
  7. Запустите бота python app.py <название товара>.
    • Бот проходит единожды по страницам, что бы он работал по расписанию, привяжите его к Cron, и составте расписание по его запуску. Читайте про Cron в интернете.
    • Рано или поздно Авито начнёт блокировать ваш ip, в таком случае начните использовать bash скрипт hard_pars:
      1. Нужно установить Tor, proxychains4, и сконфигурировать их. Скорее всего Tor не будет работать без мостов, по этому нужно ещё установить obfs4.
      2. Разрешите выполнять скрипт hard_pars командой chmod +x hard_pars
      3. Отредактируйте расписание в Cron.
  8. Активируйте бота в Telegram, принимайте ссылки в формате OpenGraph.
  9. Все ссылки хранятся в файле links.txt корневой директории.

Совместная разработка:

Буду рад совместной разработке, даже ради познания великого и могучего Git. Кто читает этот README и есть свободное время и желание покодить, потренироваться в Git-е:

  1. Склонируйте репозиторий проекта на свой компьютер: git clone https://github.com/Jagernau/hard_pars_avito.gi
  2. Создайте отдельную ветку для своей работы: git checkout -b <название ветки>
  3. Внести изменения в код проекта git add . и сделать коммиты с описанием внесённых изменений git commit -m "Описание внесённых изменений"
  4. Отправьте изменения на GitHub: git push origin <название ветки>
  5. Создайть pull request на GitHub и ожидать проверки и обсуждения внесённых изменений. Вроде всё так

Как внести свой вклад:

Вы можете внести свой вклад, выполнив следующие придуманные и полезные задачи:

  • Логгер ссылок links.txt перенести в базу данных, с полями удобными для использования. Чтение bd, отображение, логику просмотреть в utils.py. Возможно такая штука как интеграция с Google sheets.
  • Улучшить формат сообщений для Telegram;
  • Вообще этот парсер зависим до HTML разметки Avito, было бы здорово отойти от bs4 и решить всё на регулярных выражениях;
  • Перенести на ООП;
  • Можно добавить обходы Блокировщика Авито, у меня жёстко это решается через Tor, можно потоньше это решить;
  • Собрать в единый язык Python, где будет и cron и смена ip;
  • Доработать фильтры;
  • Можно избежать использования Cron и написать Systemd Unit, или вообще запускать на Docker-compose, или просто While True;
  • Написать API;
  • Составить графы пользователей и товаров, городов. Это уже мощно. Можно совершенствовать бесконечно, чем я и занимаюсь в свободное время . Никуда я его продавать не собираюсь, это только на пользу человечества.

Как сообщить об ошибках:

Если у Вас возникли проблемы с проектом или Вы хотите предложить свои идеи по его улучшению, пожалуйста, создайте новый issue на GitHub. Опишите проблему или идею подробно.

Как общаться:

Это не вот прям крутой проект, но прикольно иметь группу в ТГ. Для общения с другими участниками проекта я рекомендую использовать канал связи:

  • Telegram группа по репо: t.me/+MK9FWAJHdloyYWJi

About

Парсинг Авито с рассылкой в Telegram.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published