App
-
카카오톡 인천대학교 학식봇 만들기(AWS Lambda) - 8App 2021. 7. 12. 21:05
import json from bs4 import BeautifulSoup import crawling_INUmenu as im def lambda_handler(event, context): menu_type_list = ["중식","중식","석식","라면","국밥"] request_body = json.loads(event["body"], encoding="utf-8") action = request_body["action"] # 날짜 출력 date_obj = json.loads(action["params"]["date"]) date = date_obj["date"] date = int(date[5:].replace('-','')) diff_index = im.today_index + date - i..
-
카카오톡 인천대학교 학식봇 만들기(AWS Lambda, layer) - 7App 2021. 7. 9. 15:02
그저께에도 프로젝트는 계속해서 작업했지만, 포스팅을 하지 않았어서 그저께 진행한 진행사항을 묶어서 포스팅하게 됐다. 진행중인 학식봇에는 여러가지 기능을 구현할 계획이다. 현재 구현된 기능 : 날짜별 메뉴출력(daymenu_show) 앞으로 구현할 기능 : 특정 날짜, 특정 시간 메뉴 출력(typemenu_show) // ex) 7월 10일 중식 알려줘 먹었던 메뉴 저장(menu_save) - 히스토리 관리 기능 // ex) 오늘 중식 먹었어. -> 해당 날짜의 중식을 히스토리에 저장 현재 사용하고있는 AWS lambda를 통해 봇을 개발하려면, 각각의 기능마다 다른 lambda 함수를 사용해야한다. 그래서 crawling_INUmenu.py를 라이브러리처럼 여러 함수에서 참조해서 사용해야 하는데, 각각의..
-
카카오톡 인천대학교 학식봇 만들기(AWS Lambda) - 6App 2021. 7. 6. 19:15
추가적인 배열 정리 (not_today_menu_list와 같이 따로 나눈것이 아닌, today_menu_list와 all_menu_list로 나눔) 및 배열 인덱싱, 슬라이싱을 모두 완료하였다. 추가적으로 AWS lambda 코딩도 완료했다. 추가적으로 bs4 라이브러리를 사용하기위해서, lambda에 zip파일을 업로드하는 형식으로 라이브러리를 적용시켰다. 코드들도 모두 대대적인 개선사항이 생겼다. crawling_INUmenu.py from bs4 import BeautifulSoup # 크롤링을 위해 bs4 라이브러리 사용 from urllib.request import urlopen today_menu_list = [[[], [], [], [], []]] all_menu_list = [] men..
-
카카오톡 인천대학교 학식봇 만들기(AWS Lambda) - 5App 2021. 7. 5. 20:02
Lambda 코딩에 애를 많이 먹었던 날이다. 위의 사진과 같이 챗봇 스킬 테스팅으로 Lambda로 request를 보내고, 어떻게 넘어오는지 먼저 조사를 했다. 몇 시간 만에 response를 84번이나 찍어내며.. 수많은 오류들과 부딫혔다. 넘어오는 request들에서 내용을 뽑아내는 부분에서 많은 오류들이 발생했다. 기본적으로 챗봇에서 넘어오는 request들의 내용은 json 형식으로 인코딩된 상태로 넘어오기 때문에, 적절하게 json decoder(json.load)를 사용해서 잘 뽑아내줘야 했고, 한글은 UNICODE 형식으로 디코드되는 바람에 엄청난 오류를 뿜어냈다. json 기본 형식인 UTF-8 형식으로 넘겨줘야 오류가 나지 않는다는것을 몇 시간이 지난후에 알아냈다. dictionary ..
-
카카오톡 인천대학교 학식봇 만들기(크롤링) - 4App 2021. 7. 2. 21:06
오늘 크롤링 코드는 완성했다. 요일별, 시간별 슬라이싱도 완료했다. from bs4 import BeautifulSoup # 크롤링을 위해 bs4 라이브러리 사용 from urllib.request import urlopen today_menu_list = [[[],[],[],[],[]]] not_today_menu_list = [] for i in range(6): # 첫번째 인덱스를 요일, 두번째 인덱스를 메뉴 시간, 세번째 인덱스를 메뉴 시간별 세부 메뉴를 가진 3차원 배열 line = [] not_today_menu_list.append(line) for j in range(5): line = [] not_today_menu_list[i].append(line) def find_td(selecte..
-
카카오톡 인천대학교 학식봇 만들기(크롤링) - 3App 2021. 7. 1. 21:23
td 찾는 부분 함수화 + 버그 픽스 거의 완성되었다. 지난번에 발생한 같은 요일의 식단만 계속해서 크롤링해오는 버그를 픽스하고, 대대적으로 코드를 정리했다. from bs4 import BeautifulSoup # 크롤링을 위해 bs4 라이브러리 사용 from urllib.request import urlopen from tqdm.notebook import tqdm # 반복문의 진행 상태를 디스플레이해줄 tqdm 라이브러리 사용 today_menu_list = [[]] # 하루당 총 메뉴 개수 24개, 1일 not_today_menu_list = [] # 당일 메뉴를 제외한 6일 for i in range(6): line = [] not_today_menu_list.append(line) def fi..
-
카카오톡 인천대학교 학식봇 만들기 (크롤링)- 2App 2021. 6. 29. 21:43
어제 작성한 크롤링 코드에서, 오류들을 수정했다. from bs4 import BeautifulSoup # 크롤링을 위해 bs4 라이브러리 사용 from urllib.request import urlopen from tqdm.notebook import tqdm # 반복문의 진행 상태를 디스플레이해줄 tqdm 라이브러리 사용 menu_list = [] is_Today = False # 학식 메뉴를 제공하는 웹페이지에 게재된 표에서, 당일 메뉴의 td만 클래스명이 다르기 때문에 이용 할 Boolean 변수 for i in tqdm(range(2)): url = "https://www.uicoop.ac.kr/main.php?mkey=2&w=2&l=1" html = urlopen(url) soup = Beau..
-
카카오톡 인천대학교 학식봇 만들기 - 1App 2021. 6. 29. 21:23
학교 학식 메뉴들을 크롤링 해온 후 카카오톡 채팅봇에 적용시켜 관련내용 확인 및 히스토리 저장기능을 기본적으로 가지고 있는 봇을 만들고자한다. 어제부터 시작한 토이프로젝트로, 어제 작성한 코드를 포함하고있다. 사용언어 : Python 사용할 기술 스택들 : AWS, Pycharm 1. 파이썬으로 코딩 후, AWS를 이용해 서버에 올림 2. DynamoDB를 이용한 사용자별 과거 선택한 학식 기록 3. 위의 기능들을 카카오 오픈 빌더의 스킬에 적용시켜 봇 형태로 서비스 제공 첫날에는, 먼저 크롤링 기능을 구현하는 코드를 작성했다. from bs4 import BeautifulSoup # 크롤링을 위해 bs4 라이브러리 사용 from urllib.request import urlopen from tqdm.n..