Telegram_bot_avito_pars - приложение для поиска товаров на Авито подходящих по заданным параметрам и отправки ссылок на них в Telegram.
Python>=3.8; Beautifulsoup4
- Для Linux и Termux собственно и написан скрипт hard_pars.
- Полноценно боевое приложение будет с взаимодействием с Cron на Linux.
На момент разработки и мной приложения 2022-07-29 версия HTML разметки Авито была актуальна. Прилжежение работает отлично, и я даже купил авто не без его помощи.
- Ищет товар на Авито по заданным параметрам и фильтрам.
- Присылает ссылку на товар в Telegram бот;
- Сохраняет ссылки с датой и временем в файл links.txt;
- Проверяет что бы ссылки не повторялись, при каждом разе анализа товаров Авито, и по этому присылаются только появившиеся товары.
- Склонируйте репозиторий:
git clone https://github.com/Jagernau/Telegram_bot_avito_pars
- Зайдите в папку с приложением:
cd Telegram_bot_avito_pars
- Лучше всего создайте песочницу для Python:
- Если фанаты virtualenv:
python<версия> -m virtualenv env
- Активировать виртуальное окружение:
source env/bin/activate
- Если фанаты virtualenv:
- Установите зависимости:
pip install -r requirements.txt
- Создайте файл
.env
где будут хранится ваши сектретные данные:- TELEGRAM_TOKEN_BOT= ваш токен бота.
- USER_CHAT_ID= ваш чат id телеграмма.
- Настроить конфигурацию бота под себя в файле
config.py
- Запустите бота
python app.py <название товара>
.- Бот проходит единожды по страницам, что бы он работал по расписанию, привяжите его к Cron, и составте расписание по его запуску. Читайте про Cron в интернете.
- Рано или поздно Авито начнёт блокировать ваш ip, в таком случае начните использовать bash скрипт
hard_pars
:- Нужно установить Tor, proxychains4, и сконфигурировать их. Скорее всего Tor не будет работать без мостов, по этому нужно ещё установить obfs4.
- Разрешите выполнять скрипт
hard_pars
командойchmod +x hard_pars
- Отредактируйте расписание в Cron.
- Активируйте бота в Telegram, принимайте ссылки в формате OpenGraph.
- Все ссылки хранятся в файле links.txt корневой директории.
Буду рад совместной разработке, даже ради познания великого и могучего Git. Кто читает этот README и есть свободное время и желание покодить, потренироваться в Git-е:
- Склонируйте репозиторий проекта на свой компьютер:
git clone https://github.com/Jagernau/hard_pars_avito.gi
- Создайте отдельную ветку для своей работы:
git checkout -b <название ветки>
- Внести изменения в код проекта
git add .
и сделать коммиты с описанием внесённых измененийgit commit -m "Описание внесённых изменений"
- Отправьте изменения на GitHub:
git push origin <название ветки>
- Создайть 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