Всем привет!
Продолжаем серию уроков по разработке парсера на 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. Предлагайте темы следующих уроков.
Спасибо за внимание!