스파르타코딩/스파르타코딩 3주차
pymongo 를 이용하여 API데이터 등록해보기(feat. 네이버 영화 평점순위)
usop
2022. 6. 6. 16:06
전에 보았던 네이버 영화 평점 API 데이터를 받아 입력해보자.
전에 썻던 내용에 약간 추가해주면 되서 매우 간단하다.
우선, 임포트 먼저 해주자!
from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client.dbsparta
doc에 순위(numbers), 제목(title), 평점(grade) 순서로 담아주고 insert 해보자
<전체 code>
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:
a_tag = tr.select_one('td.title > div > a')
if a_tag is not None:
numbers = tr.select_one('td:nth-child(1) > img')['alt']
title = a_tag.text
grade = tr.select_one('td.point').text
doc = {
'rank': numbers,
'title': title,
'grade': grade
}
db.movies.insert_one(doc)
자, 이렇게 정상등록된 데이터들을 연습(find, update, delete) 해봐야겠죠!?
매트릭스 영화를 찾아봅시다.
movie = db.movies.find_one({'title':'매트릭스'})
print(movie)
헉. 매트릭스가 18위라니... 생각보다 많이 낮네요.
print(movie['rank'])
하면 18위만 출력되겠죠~
이번엔 매트릭스와 같은 평점을 받은 영화들을 찾아볼까요
우선 매트릭스의 평점 데이터에 해당하는 부분을 가져와야겠죠
target_grade = movie['grade']
이렇게 target_grade 에 movie(매트릭스)에 grade를 담아주었습니다.
그 다음 same_grade 안에 여러개를 찾을 find로 grade:매트릭스 평점을 찾되 id값은 출력하지 않겠습니다.
same_grade = list(db.movies.find({'grade':target_grade},{'_id':False}))
자, 이제 출력만 하면되지만 list 형식으로 출력될태니 for문을 사용하여 보기 편하게 출력합시다
for target in same_grade:
print(target['title'])
마지막으로 매트릭스 평점을 update를 사용하여 바꿔봅시다
db.movies.update_one({'title':'매트릭스'},{'$set':{'grade':'9.99'}})
으아악~! 영화순위 보니깐 범죄도시2 보러 가고싶다!!!