스파르타코딩/스파르타코딩 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)

movies 컬렉션에 데이터가 등록되었다.

 

자, 이렇게 정상등록된 데이터들을 연습(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'}})

매트릭스 9.99 평점

 

 

으아악~! 영화순위 보니깐 범죄도시2 보러 가고싶다!!!