Очистите Интернет с помощью Python и получайте обновления в Telegram

вступление

Это продолжение того, как и почему я создал простой веб-скрипт, чтобы уведомить нас о нашей любимой еде. В этой статье я описал, как кто-то может просматривать информацию в Интернете и получать оповещения по электронной почте, если определенное слово появляется на веб-странице.

В этой статье я опишу, что делать, если вы хотите получать обновления через Telegram, а не по электронной почте.

Если вы новичок в программировании на Python, вы также можете ознакомиться с этим постом о планировании:
Как запускать и планировать сценарии Python на iOS
Как запускать и планировать сценарии Python на Raspberry Pi

1. Создайте чистящую часть

В предыдущей статье я давал подробные пошаговые инструкции в разделе Процесс создания скрипта веб-скрапинга по этой теме, поэтому повторяться не буду.
Я просто хочу добавить, что в примере я построил оповещение для нашей любимой еды, но вы можете сканировать и отслеживать всевозможную информацию. Курсы акций, новости, тренды в социальных сетях, ключевые слова в разных лентах и ​​т. д.
Пока вы можете сделать HTML-выбор на нем, его можно очистить и отследить.

2. Настройте Телеграмм

Чтобы публиковать оповещения в Telegram, лучший и самый простой способ — создать профиль бота и через него отправлять обновления.

Создать бота очень просто, вам просто нужно поговорить с… ботом по имени Отец-бот.
После того, как вы начали общаться с ним в Telegram, отправьте /newbot команда.
Botfather попросит вас назвать бота, а также определить имя пользователя.
Имя может быть любым, но для имени пользователя придется придумать уникальное, которое ранее никто не использовал.

Здесь вы можете увидеть мою попытку, когда я создал и назвал бота для своего Raspberry Pi:
Скриншот 2019-02-04 в 21.03.38.png

Как видите, Botfather также предоставляет Токен HTML API (что я показал на своем скриншоте). Запишите его, так как он понадобится вам позже, когда вы будете реализовывать оповещение в Python.

Если вы хотите внести изменения в своего бота, вы можете сделать это, отправив /mybots команду Botfather. Вы сможете переименовать его, добавить описание и изображение профиля, сбросить токен API и многое другое.
Скриншот 2019-02-04 в 21.17.29.png

Если вы хотите прекратить общение с Botfather, вы всегда можете отправить /cancel команда, и он прекратит любое действие.

3. Реализовать отправку обновлений на канал в Python

Хорошо, на данный момент у нас должен быть скрипт Python, который собирает что-то из Интернета, и зарегистрированный бот Telegram.

Следующим шагом является определить идентификатор канала куда мы хотим отправлять обновления через нашего бота.
Итак, прежде всего вам нужно выяснить, где вы хотите получать обновления:

  1. Должен ли бот отправлять сообщения только вам?
  2. Или на канал?
  3. Или другой человек в Telegram?

Вариант 1 самый простой: просто откройте чат с вашим ботом и отправьте ему любое сообщение.
После этого откройте веб-браузер, вставьте этот URL-адрес и замените [TOKEN] с вашим уникальным токеном API бота.

https://api.telegram.org/bot[TOKEN]/getUpdates

После посещения этого URL-адреса вы получите ответ в формате JSON. В этом ответе найдите раздел, где говорится: ”from”:{“id”: 123456789, ...

Число после «id:» будет уникальным идентификатором вашего пользователя. Запишите это для последующего использования.

В случае №2 сначала нужно пригласить бота на канал, где вы хотите размещать обновления, и отправить ему сообщение, упомянув об этом.
После этого вы сможете определить ID канала так же, как и в случае 1.

В последнем сценарии (случай 3) вам нужно будет попросить другого человека найти вашего бота и отправить ему личное сообщение. Затем определите уникальный идентификатор этого человека так же, как описано выше.

Хорошо, теперь у вас есть готовый бот (токен), а также вы знаете уникальный идентификатор канала, на который он должен отправлять обновления.

Следующим шагом является реализация метода отправки в вашем коде.
Сначала соскребите необходимую информацию и сохраните ее в строковой переменной.
Опять же, если вы понятия не имеете, о чем я говорю, перейдите к моему предыдущему сообщению, где я даю подробное объяснение по этой теме.
В этом примере я назову эту переменную ResultText.

Затем добавьте эту строку кода:

requests.get("https://api.telegram.org/bot[TOKEN]/sendMessage?chat_id=[CHATID]&text={}".format(ResultText))

Стереть [TOKEN] и вместо этого добавьте уникальный токен API вашего бота.
Также стереть [CHATID] и добавьте уникальный идентификатор канала, на который вы хотите отправлять обновления.

И у вас в принципе все готово! Эта строка кода отправит RestultText через вашего бота на указанный канал. Просто как тот!

И последнее, что следует учитывать, это то, что если вы хотите использовать специальные символы, приведенный выше код может привести к ошибке. Чтобы избежать этого, я рекомендую преобразовать ваш текст в формат, удобный для URL, с помощью модуля под названием urllib.

import urllib

ParsedRestultText = urllib.parse.quote_plus(ResultText)

И используйте это вместо ResultText в вашем коде. Таким образом, конечный результат будет выглядеть так:

requests.get("https://api.telegram.org/bot[TOKEN]/sendMessage?chat_id=[CHATID]&text={}".format(ParsedResultText))

Заключительные слова

Я надеюсь, что эта короткая статья дала вам представление о том, как боты Telegram могут расширить ваши возможности веб-парсинга. Это, конечно, был просто очень простой пример, с ботами можно делать гораздо более сложные вещи, например:

  • слушайте ключевые слова и выполняйте определенные действия на их основе
  • отображать уникальные клавиатуры или кнопки меню и выполнять действия в зависимости от того, что нажимается

Обязательно ознакомьтесь с документацией Telegrams здесь, если вы хотите создавать более продвинутые решения:

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *