반응형
공부 및 참고 동영상 :
https://www.inflearn.com/course/%EC%98%81%ED%99%94%EC%98%88%EB%A7%A4-%ED%8C%8C%EC%9D%B4%EC%8D%AC#
이 전에 한 부분들 : https://88-it.tistory.com/14
저번에 텔레그램을 연결하는 것까지 진행하였는데요.
bot.sendMessage(chat_id = 975825541, text = "test")
아래 코드를 통해서 원하는 메세지를 봇->사용자에게 보낼 수 있어요. 이때 chat_id는 보내고 싶은 사용자의 고유번호입니다. 이것을 전 크롤링 코드와 합치게 되면
import requests
import telegram
from bs4 import BeautifulSoup
bot = telegram.Bot(token = '텔레그램 고유번호')
url = 'http://www.cgv.co.kr/common/showtimes/iframeTheater.aspx?areacode=01&theatercode=0056&date=20200213'
html = requests.get(url)
soup = BeautifulSoup(html.text, 'html.parser')
title_list = soup.select('div.info-movie')
bot.sendMessage(chat_id = 975825541, text = "현재 있는 영화 목록")
for i in title_list:
s = i.select('a > strong')
bot.sendMessage(chat_id = 975825541, text = s)
now_open = soup.select_one('span.round.brown')
if(now_open):
now_open = now_open.find_parent('div', class_ = 'col-times')
title = now_open.select_one('div.info-movie > a > strong').text.strip()
bot.sendMessage(chat_id = 사용자 고유번호, text = title + "예매중입니다.")
else:
bot.sendMessage(chat_id = 사용자 고유번호, text = "모든 영화가 상영 중입니다.")
이렇게 코드가 됩니다. 이때에 "텔레그램 고유번호"와 "사용자 고유번호"에는 각자 맞는 고유번호를 넣으셔야합니다. (그대로 한글로 치시는 거 아닙니다.)
from apscheduler.schedulers.blocking import BlockingScheduler
sched = BlockingScheduler()
sched.add_job(job_function, 'interval', seconds = 30)
sched.start()
그리고 일정 시간마다 자동으로 반복시켜주는 코드를 추가하였습니다. 아쉽게도 제가 돌려보니깐 CGV 사이트 점검 들어갔더라고요...ㅠ 제대로 못 하고 계속 진행하게 되었습니다.
C:\Users\USER\Desktop\aws-key>ssh -i aws-key.pem ubuntu@18.191.158.46
nohup python3 Untitled12.py & # 컴이 꺼져도 자동으로 해당 파일 실행시키기
ssh -i aws-key.pem ubuntu@18.191.158.46 # cmd로 서버 접속하는 방법
ps -ef # 서버 명령어 확인
그 뒤의 과정은 개인 정보가 너무 드러나는 바람에 추가하지 않았습니다. 결론적인 풀코드
import requests
import telegram
from bs4 import BeautifulSoup
from apscheduler.schedulers.blocking import BlockingScheduler
bot = telegram.Bot(token = '??')
url = 'http://www.cgv.co.kr/common/showtimes/iframeTheater.aspx?areacode=01&theatercode=0056&date=20200213'
def job_function():
html = requests.get(url)
soup = BeautifulSoup(html.text, 'html.parser')
title_list = soup.select('div.info-movie')
bot.sendMessage(chat_id = ??, text = "현재 있는 영화 목록")
for i in title_list:
s = i.select('a > strong')
bot.sendMessage(chat_id = ??, text = s)
now_open = soup.select_one('span.round.brown')
if(now_open):
now_open = now_open.find_parent('div', class_ = 'col-times')
title = now_open.select_one('div.info-movie > a > strong').text.strip()
bot.sendMessage(chat_id = ??, text = title + "예매중입니다.")
else:
bot.sendMessage(chat_id = ??, text = "모든 영화가 상영 중입니다.")
sched = BlockingScheduler()
sched.add_job(job_function, 'interval', seconds = 30)
sched.start()
동영상이 워낙 설명이 잘 되어있는지라 주석이 거의 없는.... 암튼 성공적으로 잘 마무리 되었습니다. 혹시나 궁금한 점 있으시면 댓글로 남겨주시면 답해드리겠습니다.
반응형
'Project' 카테고리의 다른 글
Python 유전 알고리즘으로 비번 풀기 (0) | 2020.02.20 |
---|---|
GameProgramming Project - 유니티 Shader를 이용한 비와 물결 구현 (1) | 2020.02.20 |
파이썬으로 내가 원하는 공지 알림 받기 [응용편] (0) | 2020.02.10 |
파이썬으로 영화 예매 오픈 알리미 만들기-1 (0) | 2020.02.10 |
수화 인식 프로젝트 - [4일차] 배경 지우기(openCV) (0) | 2020.02.08 |
댓글