import requests
from bs4 import BeautifulSoup
from pymongo import MongoClient
client = MongoClient('mongodb+srv://test:sparta@cluster0.55vah.mongodb.net/Cluster0?retryWrites=true&w=majority')
db = client.dbsparta
# URL을 읽어서 HTML를 받아오고,
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.naver?sel=pnt&date=20210829',headers=headers)
# HTML을 BeautifulSoup이라는 라이브러리를 활용해 검색하기 용이한 상태로 만듦
soup = BeautifulSoup(data.text, 'html.parser')
# select를 이용해서, tr들을 불러오기
movies = soup.select('#old_content > table > tbody > tr')
# movies (tr들) 의 반복문을 돌리기
for movie in movies:
# movie 안에 a 가 있으면,
a_tag = movie.select_one('td.title > div > a')
if a_tag is not None:
rank = movie.select_one('td:nth-child(1) > img')['alt'] # img 태그의 alt 속성값을 가져오기
title = a_tag.text # a 태그 사이의 텍스트를 가져오기
star = movie.select_one('td.point').text # td 태그 사이의 텍스트를 가져오기
print(rank,title,star)
(1) 영화제목 '가버나움'의 평점을 가져오기
✍️내가 써 본 코드
from pymongo import MongoClient
client = MongoClient('mongodb+srv://test:sparta@cluster0.wu00c.mongodb.net/Cluster0?retryWrites=true&w=majority')
db = client.dbsparta
movie = db.movies.find_one({'title':'가버나움'})
print(movie['score'])
DB에서 pymongo로 찾는건데 논점 파악 못 하고 bs4로 찾고 있었네...🥹
(2) '가버나움'의 평점과 같은 평점의 영화 제목들을 가져오기
✍️내가 써 본 코드
from pymongo import MongoClient
client = MongoClient('mongodb+srv://test:sparta@cluster0.wu00c.mongodb.net/Cluster0?retryWrites=true&w=majority')
db = client.dbsparta
all_movies = list(db.movies.find({},{'_id':False}))
gover = db.movies.find_one({'title': '가버나움'})['score']
for movie in all_movies:
if gover == movie['score']:
print(movie['title'])
나는 가버나움의 평점을 변수 gover로 지정하고 for 문 안에서 만약 저 평점과 같은게 있으면 title을 찾아내! 이렇게 썼다.
🔥아래는 완성 코드로 제시된 코드
target_movie = db.movies.find_one({'title':'가버나움'})
target_star = target_movie['star']
movies = list(db.movies.find({'star':target_star}))
for movie in movies:
print(movie['title'])
완성 코드는 내가 해석한 바에 따르면 아예 if문 그런거 없이 가버나움의 평점과 같은 평점을 변수로 아예 지정한 것 같다.
(3) '가버나움' 영화의 평점을 0으로 만들기
✍️내가 써 본 코드
from pymongo import MongoClient
client = MongoClient('mongodb+srv://test:sparta@cluster0.wu00c.mongodb.net/Cluster0?retryWrites=true&w=majority')
db = client.dbsparta
db.movies.update_one({'title': '가버나움'}, {'$set': {'score': 0}})
오 쉽다 이러고 바로 바꿨는데 영상 보니 주의할점! 이러면서 바꿀 부분을 설명해주네;; 저렇게 쓰면 score가 0으로 입력되어서 '숫자'로 입력된다.
❗️그런데 데이터 저장된 거 보면
따옴표 있고 모두 '문자열'로 저장되어져 있다. 그러니까 우리도 문자열로 저장하기!!
퇴근하고 공부하다가 중간에 밖에서 밥 먹고 다시 와서 하자니 벌써 10시 30분...이 됐다. 그래도 안 빠뜨리고 하루에 조금씩 공부하다니! 대단해😎...그런데 오늘 퀴즈 영상은 5분짜리인데 나는 한 20~30분 한 듯...분발하자