Telebot python парсинг авито djangoTelebot python парсинг авито django

Введение

В данной статье мы рассмотрим, как создать и запустить телеграмм-бота на Python с использованием модуля Telebot. Мы также разберём, как интегрировать этого бота в Django для последующего развертывания. Дополнительно бот будет парсить данные с сайта Avito, предоставляя пользователям возможность получать актуальные данные по интересующим их товарам.

Шаг 1: Установка необходимых библиотек

Для начала работы с ботом на Python, необходимо установить следующие модули:

  • pyTelegramBotAPI (Telebot) — для взаимодействия с Telegram API.
  • requests — для отправки HTTP-запросов, необходимых для парсинга данных с Avito.
  • beautifulsoup4 — для работы с HTML-страницами, которые мы будем парсить.
  • django — для запуска приложения на Django.

Для установки используем команду:

pip install pyTelegramBotAPI requests beautifulsoup4 django

Шаг 2: Создание телеграмм-бота

Получение токена

Для создания бота необходимо получить токен у @BotFather. После создания бота, вы получите уникальный API-токен, который понадобится для взаимодействия с Telegram API.

Написание кода бота

Создаём файл bot.py, который будет содержать основной функционал бота. Импортируем необходимые библиотеки:

import telebot
import requests
from bs4 import BeautifulSoup

API_TOKEN = 'ВАШ_ТОКЕН_БОТА'
bot = telebot.TeleBot(API_TOKEN)

Добавление команды для парсинга Avito

Теперь создадим команду, которая будет парсить данные с Avito по запросу пользователя. Допустим, мы будем парсить данные о продаже автомобилей:

def parse_avito(search_query):
url = f"https://www.avito.ru/rossiya/avtomobili?s=104&q={search_query}"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')

cars = []
for item in soup.find_all('div', class_='iva-item-content'):
title = item.find('h3').text
price = item.find('span', class_='price-text').text
link = 'https://www.avito.ru' + item.find('a')['href']
cars.append(f"{title}: {price} \nСсылка: {link}")

return cars

@bot.message_handler(commands=['start'])
def start(message):
bot.send_message(message.chat.id, "Привет! Я помогу найти авто на Avito. Введите запрос в формате /search название авто")

@bot.message_handler(commands=['search'])
def search(message):
search_query = message.text.split(maxsplit=1)[1]
cars = parse_avito(search_query)
if cars:
for car in cars:
bot.send_message(message.chat.id, car)
else:
bot.send_message(message.chat.id, "Ничего не найдено")

bot.polling()

Теперь наш бот готов к взаимодействию с пользователями. При вводе команды /search бот будет отправлять HTTP-запрос на сайт Avito, парсить HTML-страницу и возвращать результаты пользователю.

Шаг 3: Интеграция бота с Django

Создание Django проекта

Для интеграции бота в Django нам нужно создать новый Django-проект. Используем команду:

django-admin startproject avito_bot

Перейдём в директорию проекта:

cd avito_bot

Создадим приложение для бота:

python manage.py startapp bot_app

Настройка проекта

В файле settings.py добавляем наше приложение в INSTALLED_APPS:

INSTALLED_APPS = [
# ...
'bot_app',
]

Создание представления для запуска бота

Внутри приложения bot_app создадим представление для работы с нашим ботом. В файле views.py добавляем следующий код:

from django.http import HttpResponse
from .bot import bot

def run_bot(request):
bot.polling()
return HttpResponse("Телеграмм-бот запущен")

В файле urls.py зарегистрируем маршрут для запуска бота:

from django.urls import path
from .views import run_bot

urlpatterns = [
path('run-bot/', run_bot),
]

Запуск Django проекта

Запустим сервер Django:

python manage.py runserver

Теперь при переходе по адресу http://localhost:8000/run-bot/ ваш бот начнет свою работу.

Шаг 4: Развертывание проекта на сервере

Для того чтобы ваш бот мог работать в постоянном режиме, необходимо развернуть Django-проект на сервере. Рассмотрим основные шаги:

  1. Установка и настройка сервера. Например, для развертывания можно использовать Ubuntu сервер с Gunicorn и Nginx.
  2. Настройка виртуального окружения для проекта Django.
  3. Запуск Django проекта с помощью Gunicorn для обработки запросов к боту.
  4. Настройка системы автозапуска для Gunicorn, чтобы бот автоматически запускался при перезагрузке сервера.

Заключение

В данной статье мы разобрали процесс создания телеграмм-бота с использованием библиотеки pyTelegramBotAPI, а также его интеграцию в Django. Наш бот умеет парсить данные с сайта Avito, предоставляя пользователям актуальную информацию по запросам. После развертывания на сервере бот будет доступен в любое время для работы с пользователями.

С таким подходом можно легко настроить бота под разные сценарии, используя дополнительные возможности Django и другие инструменты Python.

Поделится