파이썬 - 텔레그램 상영영화 조회 봇 만들기 [4] - 텔레그램 봇 적용하기

 

파이썬 - 텔레그램 상영영화 조회 봇 만들기 [3] - 텔레그램 봇 만들기

파이썬 - 텔레그램 상영영화 조회 봇 만들기 [2] - 크롤링 내용 추가 파이썬 - 텔레그램 상영영화 조회 봇 만들기 [1] - 검색결과 크롤링 목차 1.개발을 위해 필요한 도구 2.검색결과 크롤링 3.github

newstroyblog.tistory.com

드디어 파이썬 봇에 저희가 [1]에서 코딩한 내용을 적용할수 있습니다

지난번 봇 생성에관한 내용을 놓치신분은 위의 링크로 이동해주세요

 

파이썬코드에서 텔레그램 봇과 연동하기위해 필요한 모듈이 있습니다

pip install python-telegram-bot

위의 모듈을 vscode 터미널에 입력하여 설치해주세요

저는 이미 설치가 되어있기 때문에 설치과정은 생략하겠습니다

1
2
3
import telegram
from telegram.ext import Updater, CommandHandler
 
cs

코드 상단에 위와 같이 파이썬 모듈을 불러와줍니다

1
bot= telegram.Bot(token='your token')
 
cs

그리고 바로 밑에 위와 같이 입력해주세요

'your token'부분에는 이전에 봇을 생성하고 발급받은 토큰값을 입력해주시면 됩니다

 

그리고 채팅을 보낼 사용자의 id값을 알아야하는데 이를 알기위해서는

https://api.telegram.org/bot'API TOKEN'/getUpdates

'API TOKEN'에 텔레그램 봇 토큰을 입력하여 웹페이지로 이동해주세요

처음 접속하면 이렇게 뜰수가 있는데 이상태에서 자신의 텔레그램 봇에게 아무 메세지나 입력합니다

BotFather가아닌 여러분의 텔레그램 봇입니다 자신의 봇은 @봇이름으로 검색하실수 있습니다

 

이렇게 message라고 아무런 내용의 텍스트를 보낸뒤에 웹페이지를 새로고침해보면

 

우측에 text값에는 저희가 입력한 내용의 텍스트가 나오고

좌측에 id부분에 숫자가 나오는데 사진상에는 가려놨습니다 해당 id가 여러분들의 고유id입니다

 

1
chat_id = '06516106510'
cs

이제 페이지를 닫고 id를 복사하여 위에서 선언한 bot변수 밑에다가 chat_id변수를 새로생성하여 id값을 입력해주세요

 

이제 준비는 끝났습니다 앞서 크롤링한 메세지만 보내면되는데

이전에는 print문으로 메세지의 내용을 터미널에 출력했지만 텔레그램 봇으로 메세지를 전송하기 위해서는

1
bot.sendmessage(chat_id=chat_id,text'text')
cs

위와 같은 형식으로 작성해주면 됩니다

이전에 print문으로 작성한 내용을 'text'부분에 넣어주면 되겠죠? 기존코드에서 수정해보겠습니다

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import requests
from bs4 import BeautifulSoup
import datetime #오늘의 날짜를 구하기위해 모듈을 가져옴
import telegram
 
 
bot=telegram.Bot(token ='yourtoken')
chat_id = 'yourid'
 
 
url = 'https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=0&ie=utf8&query=%EB%A9%94%EA%B0%80%EB%B0%95%EC%8A%A4+%EC%B2%9C%EC%95%88+%EC%83%81%EC%98%81%EC%8B%9C%EA%B0%84%ED%91%9C'
res = requests.get(url)
res.raise_for_status()
 
soup = BeautifulSoup(res.text, "lxml")
movie_section = soup.find_all("th", attrs={"scope":"row"})
timeinfo = soup.find_all("td", attrs={"class":"time"} ) 
 
today = str(datetime.date.today()) #오늘의 날자를 년월일 으로 나타냄
bot.send_message(chat_id=chat_id, text=today+' 메가박스 상영시간표')
for idx,sections in enumerate(movie_section,start=0):
    bot.sendMessage(chat_id=chat_id, text=sections.a.get_text()) 
    bot.sendMessage(chat_id=chat_id, text='>'+sections.find("span").get_text()) 
    bot.sendMessage(chat_id=chat_id, text=timeinfo[idx].get_text())
    bot.sendMessage(chat_id=chat_id, text='ㅤ'#' '공백입력시 오류가 남으로 공백 문자를 사용함
cs

 

지금까지 배운내용이 많아보이지만 코드상으로는 빈줄을 제외하면 18줄밖에 되지 않습니다

이제한번 실행해보겠습니다

 

그랬더니 오늘의 영화와 등급 상영시간표가 텔레그램 메세지로 출력됩니다

 

오늘의 공부 끝!

 

전체 코드는 github에서 보실수 있습니다

 

GitHub - Blue-B/megabox-movie-list

Contribute to Blue-B/megabox-movie-list development by creating an account on GitHub.

github.com

 

Top