변수를 주어 기준을 주어 출발하는 것이 안정적이다.
내 코드
movies = list(db.movies.find({'star':'9.59'}))
for movie in movies:
print(movie['title'])
강의 코드
all_movies = list(db.movies.find({'star' : star}, {'_id':False}))
for m in all_movies:
print(m['title'])
db.movies.update_one({'title':'가버나움'},{'$set':{'star':'0'}})
주요 코드
# 저장 - 예시
doc = {'name':'bobby','age':21}
db.users.insert_one(doc)
# 한 개 찾기 - 예시
user = db.users.find_one({'name':'bobby'})
# 여러개 찾기 - 예시 ( _id 값은 제외하고 출력)
all_users = list(db.users.find({},{'_id':False}))
# 바꾸기 - 예시
db.users.update_one({'name':'bobby'},{'$set':{'age':19}})
# 지우기 - 예시
db.users.delete_one({'name':'bobby'})
for music in musics:
title = music.select_one('tr:nth-child(1) > td > input')['title'].strip()
rank = music.select_one('tr:nth-child(1) > td.number').text[0:2].strip()
artist = music.select_one('tr:nth-child(1) > td.info > a.artist.ellipsis').text.strip()
print(rank, title, artist)
music으로 기본 곡 뽑아온 다음 타이틀, 랭크, 아티스트를 하나씩 가져오는 방법으로 실시
trs = soup.select('#body-content > div.newest-list > div > table > tbody > tr')
for tr in trs:
title = tr.select_one('td.info > a.title.ellipsis').text.strip()
rank = tr.select_one('td.number').text[0:2].strip()
artist = tr.select_one('td.info > a.artist.ellipsis').text
print(rank, title, artist)
차이 : 셀렉터 긁어온 곳 차이 조금 있음. 그리고 내 답안으로 하면 1위만 나옴. 이 점을 간과하고 과제 마무리 함... 검사만 제대로 돌렸어도..(애초에 tr까지 잡았어야 했는데 tbody에서 끊긴게 컸다.)
python이라 만만히 보고 시작했는데 생각보다 깊게 들어가서 당황했음. 많이 까먹은 것도 있고 DB 딴을 건드는 것도 스크래핑을 하는 것도 어색했음. 다음에도 자주 들어가며 다른 사이트도 스크래핑 해봐야겠음.