1. 서울시교육청 나이스 급식 정보
2. 정확한 학교 급식 접근 URL 구조
http://stu.sen.go.kr/sts_sci_md01_001.do?schulCode=B100000579&schulCrseScCode=4&schulKndScCode=04&schMmealScCode=2&schYmd=2020.12.18
나의생활 > 학교안내 > 기본정보 에서 자신의 학교를 검색하고
해당 페이지의 쿠키값을 확인하면 우리에게 필요한 값들을 얻을 수 있습니다.
schulCode=B100000579 #우리가 검색한 학교의 고유 코드이다. // 현재 경기기계공업고등학교
schulKndScCode=04 #01은 유치원, 02는 초등학교, 03은 중학교, 04는 고등학교를 의미한다.
schulCrseScCode=4 #1은 유치원, 2는 초등학교, 3은 중학교, 4는 고등학교를 의미한다.
3. 경기기계공업고등학교 학교 코드 확인
import requests
import json
url = 'https://schoolmenukr.ml/code/api?q=경기기계공업고등학교'
response = requests.get(url)
school_infos = json.loads(response.text)
print(school_infos)
4. 급식정보 받아오기
import requests
from bs4 import BeautifulSoup
import datetime
import re
now = str(datetime.datetime.now())
day = now[:4] + now[5:7] + now[8:10]
print(day)
req = requests.get("http://stu.sen.go.kr/sts_sci_md01_001.do?schulCode=B100000579&schulCrseScCode=4&schulKndScCode=04&schMmealScCode=2&schYmd=20201218")
#print(req.text)
soup = BeautifulSoup(req.text, "html.parser")
#print(soup)
element = soup.find_all("tr")
#print(element[2])
element = element[2].find_all('td')
element = element[5] # num
element = str(element)
element = element.replace('[', '')
element = element.replace(']', '')
element = element.replace('<br/>', '\n')
element = element.replace('<td class="textC last">', '')
element = element.replace('<td class="textC">', '')
element = element.replace('</td>', '')
element = element.replace('(h)', '')
element = element.replace('.', '')
element = re.sub(r"\d", "", element)
print(element)
5. 디스코드 봇 파이썬 서버 코드
# discord 라이브러리 사용 선언
import discord
import requests
from bs4 import BeautifulSoup
import datetime
import re
class chatbot(discord.Client):
# 프로그램이 처음 실행되었을 때 초기 구성
async def on_ready(self):
# 상태 메시지 설정
# 종류는 3가지: Game, Streaming, CustomActivity
game = discord.Game("내용")
# 계정 상태를 변경한다.
# 온라인 상태, game 중으로 설정
await client.change_presence(status=discord.Status.online, activity=game)
# 준비가 완료되면 콘솔 창에 "READY!"라고 표시
print("READY")
# 봇에 메시지가 오면 수행 될 액션
async def on_message(self, message):
# SENDER가 BOT일 경우 반응을 하지 않도록 한다.
if message.author.bot:
return None
# message.content = message의 내용
if message.content == "바보":
# 현재 채널을 받아옴
channel = message.channel
# 답변 내용 구성
msg = "너도 바보"
# msg에 지정된 내용대로 메시지를 전송
await channel.send(msg)
return None
# 프로그램이 실행되면 제일 처음으로 실행되는 함수
if __name__ == "__main__":
# 객체를 생성
client = chatbot()
# TOKEN 값을 통해 로그인하고 봇을 실행
client.run("Nzg5NDQ5ODI2MjczMTk4MTAw.X9yOcQ.GYQVzKRp4ezVi54Qg2l4JsgOCZk")
디스코드 봇 만들기 추가 자료
blog.naver.com/wpdus2694/221192640522
6. 급식 정보 제공 디스코드 봇 파이썬 서버 코드
# discord 라이브러리 사용 선언
import discord
import requests
from bs4 import BeautifulSoup
import datetime
import re
now = str(datetime.datetime.now())
day = now[:4] + now[5:7] + now[8:10]
print(day)
req = requests.get("http://stu.sen.go.kr/sts_sci_md01_001.do?schulCode=B100000579&schulCrseScCode=4&schulKndScCode=04&schMmealScCode=2&schYmd=2020.12.18")
#print(req.text)
soup = BeautifulSoup(req.text, "html.parser")
#print(soup)
element = soup.find_all("tr")
#print(element[2])
element = element[2].find_all('td')
element = element[5] # num
element = str(element)
element = element.replace('[', '')
element = element.replace(']', '')
element = element.replace('<br/>', '\n')
element = element.replace('<td class="textC last">', '')
element = element.replace('<td class="textC">', '')
element = element.replace('</td>', '')
element = element.replace('(h)', '')
element = element.replace('.', '')
element = re.sub(r"\d", "", element)
print(element)
class chatbot(discord.Client):
# 프로그램이 처음 실행되었을 때 초기 구성
async def on_ready(self):
# 상태 메시지 설정
# 종류는 3가지: Game, Streaming, CustomActivity
game = discord.Game("내용")
# 계정 상태를 변경한다.
# 온라인 상태, game 중으로 설정
await client.change_presence(status=discord.Status.online, activity=game)
# 준비가 완료되면 콘솔 창에 "READY!"라고 표시
print("READY")
# 봇에 메시지가 오면 수행 될 액션
async def on_message(self, message):
# SENDER가 BOT일 경우 반응을 하지 않도록 한다.
if message.author.bot:
return None
# message.content = message의 내용
if message.content == "오늘급식":
# 현재 채널을 받아옴
channel = message.channel
# 답변 내용 구성
msg = element
# msg에 지정된 내용대로 메시지를 전송
await channel.send(msg)
return None
# 프로그램이 실행되면 제일 처음으로 실행되는 함수
if __name__ == "__main__":
# 객체를 생성
client = chatbot()
# TOKEN 값을 통해 로그인하고 봇을 실행
client.run("Nzg5NDQ5ODI2MjczMTk4MTAw.X9yOcQ.GYQVzKRp4ezVi54Qg2l4JsgOCZk")
7. 동작 확인
서울시교육청 나이스 -> 파이썬 서버 피씨
파이썬 서버 피씨 -> 디스코드 봇
'Python > 파이썬 프로젝트' 카테고리의 다른 글
Python Tello Drone 기본 동작 제어. (2) | 2021.09.07 |
---|---|
카카오 api 토큰 발급 (4) | 2021.04.14 |
[모듈 2-12] 파이썬 매크로 기본 함수와 다양한 활용 예제 코드 (0) | 2020.11.26 |
[모듈 2-11] python 기반 스네이크 게임 만들기 (1) | 2020.11.13 |
[모듈 2-10] pygame 패키지의 기본 사용법 (0) | 2020.11.12 |