- 선정된 주제 : 게임 카테고리별 추천 사이트
- 사용 API : https://www.freetogame.com/api-doc
- 역할 분배 : 프론트엔드(2),백엔드(2), 프론트&백엔드(2)
- mongoDB : 데이터베이스 , 그래픽인터페이스(=GUI)를 제공하지 않는다.
- Robo3T : mongoDB의 내부를 확인할 수 있도록 해준다.
- SQL
: 행과 열이 정해진 엑셀에 데이터를 저장하는 것처럼, 미리 항목을 정해둔 데이터베이스.
정형화 되어있어 데이터가 일관되어 분석에는 용이하나,
그만큼 중간에 틀을 바꾸기가 쉽지 않아 변화에는 비효율적이다.
(ex) MS-SQL, My-SQL, Oracle ...
- NoSQL ( Not only SQL )
: 딕셔너리 형태로 데이터를 저장하는 데이터베이스.
데이터 하나하나 다른 값들을 가질 수 있게 된다.
자유로운 형태라서 변화에는 용이하나, 일관성이 부족하다.
(ex) mongoDB ...
- Pymongo : mongoDB를 Python으로 조작하기 위한 라이브러리.
from pymongo import MongoClient
#pymongo를 임포트 하기
client = MongoClient('localhost', 27017)
#mongoDB는 27017 포트로 구동
db = client.dbsparta
#'dbsparta'라는 이름의 데이터베이스 추가
- Pymongo에서는 mongoDB 내의 데이터 저장, 검색, 수정, 삭제가 가능하다.
doc = {'name':'bobby','age':21}
# 이 데이터 하나를
db.users.insert_one(doc)
# 데이터베이스의 users에 저장한다.
user = db.users.find_one({'name':'bobby'})
# users에서 이 값을 가진 데이터를 찾는다.
same_ages = list(db.users.find({'age':21},{'_id':False}))
# users에서 이 값을 가진 데이터들을 리스트로 만든다.
db.users.update_one({'name':'bobby'},{'$set':{'age':19}})
# users에 name:bobby인 데이터의 age를 19로 수정한다.
db.users.delete_one({'name':'bobby'})
# users의 데이터 중 이 값을 가진 데이터를 지운다.
네이버 영화 평점을 스크랩핑해서,
- Q1 영화제목 '매트릭스'의 평점을 가져오기
- Q2 '매트릭스'의 평점과 같은 평점의 영화 제목들을 가져오기
- Q3 매트릭스 영화의 평점을 0으로 만들기
import requests
from bs4 import BeautifulSoup
from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client.dbsparta
headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}
data = requests.get('https://movie.naver.com/movie/sdb/rank/rmovie.nhn?sel=pnt&date=20200303',headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')
trs = soup.select('#old_content > table > tbody > tr')
for tr in trs:
tag = tr.select_one('td.title > div > a')
user = db.movies.find_one({'title':'매트릭스'},{'_id':False})
same = user['star']
#quiz1
print(same)
#quiz2
users = list(db.movies.find({'star':same},{'_id':False}))
for us in users :
print(us['title'])
#quiz3
#db.movies.update_one({'title':'매트릭스'},{'$set':{'star':'0'}})
- Q1
- Q2
- Q3
import requests
from bs4 import BeautifulSoup
from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client.dbsparta
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}
data = requests.get('https://www.genie.co.kr/chart/top200?ditc=D&ymd=20200403&hh=23&rtm=N&pg=1', headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')
geni = soup.select('#body-content > div.newest-list > div > table > tbody > tr')
for songs in geni:
song = songs.select_one('td.info > a.title.ellipsis').text
title = song.strip()
rank = songs.select_one('td.number').text[0:2].strip()
# 슬라이싱 : [a:b] a열에서 b열까지 추출.
singer = songs.select_one('td.info > a.artist.ellipsis').text.strip()
print(rank, title, singer)
: 강의를 들으며 할때는 잘 따라하다가도 퀴즈나 숙제 할때는 몇번이고 헤매고 오류나고 했지만 결국에는 혼자만의 힘으로 해내게 되는게 스파르타의 힘이 아닐까싶다. 어쩌면 다음에 다시 mongoDB를 하게 될때 다시 또 헤맬수도 있겠지만, 그때도 다시 잘 해낼거라 는 자신감이 생겼다. 이번 프로젝트에서 내가 가져온 주제가 선정이 되서 엄청 놀랐었다. 안될거라고 예상했기에 주제설명도 엄청 떨면서 횡설수설한 기분이었지만, 팀원분들이 워낙 좋은 분들이기도 하고 다들 나보다는 능력이 출중하신 분들이라서 이야기가 생각보다 잘 정리되었다. 내일까지 홈페이지 구성을 생각해온뒤 이야기를 나누기로 했다. 고민 좀 해봐야할듯 하다.