์๋ ๋งํฌ๋ ์ฐ๋ฆฌํ๊ต์์ ์๋จ ์ ๋ณด๋ฅผ ์๋ ค์ฃผ๋ ์ฌ์ดํธ๋ค.
https://coop.koreatech.ac.kr/dining/menu.php
ํด๋น ์ฌ์ดํธ์์ ์ ๋ณด๋ฅผ ์ฝ์ด์์ DB์ ์ ์ฅํด๋ณผ ๊ฒ์ด๋ค.
[์ฌ์ฉ ๋๊ตฌ]
์ธ์ด : Python 3.8.2
IDE : Pycharm
DB : MySQL 5.7
[์ฝ๋]
from urllib.request import urlopen
from bs4 import BeautifulSoup
import ssl
import re
import pymysql
context = ssl._create_unverified_context()
URL = urlopen("https://coop.koreatech.ac.kr/dining/menu.php", context=context)
bs = BeautifulSoup(URL, 'html.parser')
name = re.compile('menu-list?.')
menuList = []
for menulist in bs.find_all("td", {"class":name}):
before = menulist.text
after = re.sub('\t', '', before)
if(after=="\r\n\xa0\r\n"):
menuList.append('-')
else:
menuList.append(after)
breakfast = []
lunch = []
dinner = []
for a in range(3):
for b in range(8):
if(a == 0):
breakfast.append(menuList[a*8 + b])
elif(a==1):
lunch.append(menuList[a*8 + b])
elif(a==2):
dinner.append(menuList[a*8 + b])
conn = pymysql.connect(host='localhost', user='root', password='12345', db='daily_menu', charset='utf8')
try:
with conn.cursor() as curs:
curs.execute('TRUNCATE TABLE breakfast;')
curs.execute('TRUNCATE TABLE lunch;')
curs.execute('TRUNCATE TABLE dinner;')
sql_b = 'INSERT INTO breakfast(korean, special, onedish, western ,faculty ,subak ,cam2_1 ,cam2_2) VALUES(%s, %s, %s, %s, %s, %s, %s, %s)'
sql_l = 'INSERT INTO lunch(korean, special, onedish, western ,faculty ,subak ,cam2_1 ,cam2_2) VALUES(%s, %s, %s, %s, %s, %s, %s, %s)'
sql_d = 'INSERT INTO dinner(korean, special, onedish, western ,faculty ,subak ,cam2_1 ,cam2_2) VALUES(%s, %s, %s, %s, %s, %s, %s, %s)'
for flag in range(3):
if(flag == 0):
var = tuple(breakfast)
curs.execute(sql_b, var)
elif(flag == 1):
var = tuple(lunch)
curs.execute(sql_l, var)
elif(flag == 2):
var = tuple(dinner)
curs.execute(sql_d, var)
conn.commit()
rs = curs.fetchall()
for row in rs:
print(rs[row])
finally:
conn.close()
[์ค๋ช ]
breakfast, lunch, dinner ์ธ ํ ์ด๋ธ์ ๊ตฌ์กฐ๋ ์๋์ ๋์ผํ๋ค.
์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ ํ๋ฆ์ผ๋ก ์งํ๋๋ค.
์ฌ์ดํธ์์ ์๋จ์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์จ๋ค. -> ๊ฐ์ ธ์จ ์๋จ ์ ๋ณด๋ฅผ 8๊ฐ์ฉ ๋๋์ด ์์นจ, ์ ์ฌ, ์ ๋ ๋ฆฌ์คํธ์ ๊ฐ๊ฐ ๋ฃ๋๋ค (์๋จ์ ๋ด์ฉ์ 8๊ฐ์ ์ฃผ์ ๋ก ๋๋์ด์ ธ ์๋ค {ํ์, ํน์.. ๋ฑ๋ฑ}) -> ๊ฐ์ ธ์จ ๋ด์ฉ์ ์์นจ, ์ ์ฌ, ์ ๋ Table์ ๊ฐ๊ฐ ์ ์ฅํ๋ค.
- SSL์ธ์ฆ์ ๊ฑฐ์ณ๊ฐ ์์์ context๋ฅผ ์์ฑํ๊ธฐ์ํด _create_unverified_context()ํจ์๋ฅผ ์ฌ์ฉํ๋ค.
- execute() ๋ฉ์๋๋ ํ๋์ Row (ํ๋์ Tuple ๋ฐ์ดํ)๋ฅผ ์นํํ์ฌ ์คํํ๊ธฐ ๋๋ฌธ์ breakfast๋ฅผ Tuple๋ก ๋ณํํด์ฃผ์๋ค.
- ๋น์ผ๋ ์ ํด๋นํ๋ ๋ฐ์ดํฐ๋ง์ ํ์๋ก ํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐฑ์ ํ ๋ ๋ง๋ค ํ ์ด๋ธ์ ์ด๊ธฐํ ์ํค๊ธฐ ์ํด SQL๋ฌธ์์ TRUNCATE๋ฅผ ์ฌ์ฉํ๋ค.
- tdํ๊ทธ์ class๊ฐ์ ๋ํด ํฌ๋กค๋งํด์ค๋๋ฐ ํด๋น ์๊ฐ๋์ ๋ฐ๋ผ์ tdํ๊ทธ์ ํด๋์ค๊ฐ ๋ค์ 'o'๊ฐ ๋ถ์ด์ ์ ๊ทํํ์์ ์ด์ฉํด ๋ค์ ํ๊ธ์๋ฅผ ํํฐ๋งํ๋ค.
'menu-time?.'
'๐ฅณ Project > kakao chatbot' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Chatbot] 5. ์นด์นด์ค ์คํ๋น๋๋ก ๋ฐฐํฌ (0) | 2020.04.05 |
---|---|
[Chatbot] 4. spring ํ๋ก์ ํธ ์๋ฒ๋ก ์ฌ๋ฆฌ๊ธฐ (0) | 2020.04.05 |
[Chatbot] 3. crontab์ผ๋ก ์ค์ผ์ค๋งํ๊ธฐ (0) | 2020.04.05 |
[Chatbot] 2. AWS ์์ํ๊ธฐ (1) | 2020.04.03 |
[Chatbot] 0. ํ๋ก์ ํธ๋ฅผ ์์ํ๋ฉฐ.. (0) | 2020.03.31 |