[스파르타코딩클럽] 웹개발 종합반 - 3주차(5)

변시윤·2021년 7월 16일
0

3-14 Quiz_웹스크래핑 결과 이용하기

Ⅰ.영화제목 '매트릭스'의 평점을 가져오기

  • 정답
from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client.dbsparta

target_movie = db.movies.find_one({'title':'매트릭스'})
print (target_movie['star'])
  • 나의 코드
from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client.dbsparta

matrix = db.movies.find_one({'title': '매트릭스'}, {'_id': False})
print(matrix['star'])

💯

Ⅱ.'매트릭스'의 평점과 같은 평점의 영화 제목들을 가져오기

  • 정답
movie = db.movies.find_one({'title':'매트릭스'})
target_star = movie['star']

target_movies = list(db.movies.find({'star':target_star},{'_id':False}))

for target in target_movies:
    print(target['title'])
movie = db.movies.find_one({'title':'매트릭스'})
target_star = movie['star']

movie: title이 '매트릭스'인 값을 특정하는 변수
target_star: movie의 star값을 나타내는 변수

target_movies = list(db.movies.find({'star':target_star},{'_id':False}))

movie의 star값을 target_movies라는 list로 정의

for target in target_movies:
    print(target['title'])

target_movies list에 속한 dictionary를 target이라는 개별값으로 지정
target의 제목만 출력

  • 나의 코드
same_star = list(db.movies.find({'star':'9.39'},{'_id':False}))
for movie in same_star:
    print(movie['title'])

3번의 단계를 걸쳐 출력한 정답과는 다르게 나는 처음부터 find에 stat값이 9.39라는 조건을 부여했다. 출력시 결과는 둘 다 같다. 그런데 선생님처럼 여러번의 변수를 써서 각각의 요소를 정의 내렸어야 하는 건가 싶다. 사실 잘 모르겠다...🤔 솔직히 정답 코드는 변수가 너무 많고 길어져서 헷갈린다... 내가 쓴 코드가 더 직관적이고 짧아서 보기 간편하다고 생각하는데 그건 어디까지나 내 생각이고..^^ 선생님도 나처럼 쓸 줄 몰라서 안썼던 게 아닐 텐데 굳이 길게 쓴 거 보면 이게 현직 개발자들이 보기엔 더 좋은 코드인가 싶다. 흠.....몰라...모르겠어요....복잡한 코딩의 세계...


Ⅲ.매트릭스 영화의 평점을 0으로 만들기

  • 정답

db.movies.update_one({'title':'매트릭스'},{'$set':{'star':'0'}})

  • 나의 코드

db.movies.update_one({'title':'매트릭스'},{'$set':{'star':0}})

오답은 아님. 단...!

<매트릭스의> 평점에는 #이 붙고 <인생은 아름다워>와 <라이언 일병 구하기>의 평점에는 ""가 붙었다. <매트릭스> 평점 update시 0을 숫자열로 적었기 때문이다. 숫자를 문자열로 인식하려면 따옴표를 붙여야 한다. 이는 데이터를 더 효율적으로 관리하기 위함이다.

예를 들어서 star값이 9.37인 영화들을 출력한다고 가정해보자. 문자열로 출력하면 <헌터 킬러>, <아이 캔 스피크>, <동주>, <반지의 제왕: 왕의 귀환>만이 출력된다.
반면에 숫자열로 출력하면 <죽은 시인의 사회>와 <레옹>만이 출력된다.
결국 모두 출력하려면 문자열과 숫자열을 따로 출력해서 합해야 한다. 이런 번거로움을 방지하기 위해 문자열로 통일하는 것이다.

profile
개그우먼(개발을 그은성으로 하는 우먼)

0개의 댓글