Урок 3. Отправка файлов с результатом парсинга в чат Telegram | Парсинг в Telegram

Published: 16 November в 16:26


Всем привет!

Продолжаем серию уроков по разработке парсера на Python. Сегодня мы добавим отправку файлов с результатом парсинга в чат Telegram, используя Telegram Bot API.

В предыдущем уроке мы сохраняли результат парсинга товаров с тестового каталога в Excel-таблицу.

Шаг 1. Подготовка

Прежде, чем перейти к работе с Telegram Bot API, нужно создать своего бота через @BotFather. Открываем бота и пишем /start, затем вводим /newbot и выполняем инструкции, заполняя поля. Когда бот создан, отправляем /mybots, выбираем бота из списка и нажимаем API Token.

Добавим токен, как глобальную переменную в наш код:

TELEGRAM_TOKEN = '888427890:AAGn-8b8zY_WDJImkEuKqRu1_8QNDKWw9nM'

Также нам понадобится chat_id нашего диалога, куда будем принимать файлы. Вы можете получить его следующим образом:
1. Отправить в чат с ботом любое сообщение.
2. Вызвать метод getUpdates.
3. Найти в ответе от Telegram свое сообщение и соответствующий ему chat_id.

Я получил chat_id по-другому, а именно через бота @parsemachine_bot, который присылает chat_id текущего диалога с пользователем. Сохраним chat_id.

CHAT_ID = '-423328381'

Шаг 2. Программирование

Объявим функцию send_document, которая принимает на вход:
1. filename – имя файла для отправки в чат Telegram.
2. token – токен бота Telegram, полученный через @botfather.
3. chat_id – ID чата, куда будут присылаться файлы.

Для взаимодействия с Telegram, нам нужно сформировать URL:

https://api.telegram.org/bot{token}/METHOD_NAME

Подставляем token и метод (METHOD_NAME ) у нас sendDocument

https://api.telegram.org/bot888427890:AAGn-8b8zY_WDJImkEuKqRu1_8QNDKWw9nM/sendDocument

Два обязательный параметра при вызове sendDocument:
1. chat_id.
2. document – файл.

Выполняем POST-запрос уже известной нам библиотекой requests, передаем параметры запроса и файл.
Ответ выводим на экран.

def send_document(filename, token, chat_id):
     url = 'https://api.telegram.org/bot{}/sendDocument'.format(token)
     data = {'chat_id': chat_id, 'caption': 'Результат парсинга'}
     with open(filename, 'rb') as f:
         files = {'document': f}
         response = requests.post(url, data=data, files=files)
         print(response.json())

Итог

Запускаем и видим два файла с парсингом в чате!

На этом все, спасибо за внимание!

Ссылка на полный текст исходного кода – catalog.py

Если у вас возникли какие-то вопросы, можете задать их в комментариях к этой статье или под видео на YouTube. Предлагайте темы следующих уроков.

Спасибо за внимание!

Discuss in Telegram