드디어 파이썬 봇에 저희가 [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에서 보실수 있습니다