스파르타 웹개발 종합반 3주차 - 파이썬 기초(2)

청경채·2021년 7월 15일
0
post-thumbnail

12강 pymongo로 DB조작하기

파이썬으로 몽고db조작시 pymongo 라이브러리 이용!

기본 코드

from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client.dbsparta
#4가지 기본코드 insert / find/ update / delete

────────────────────────────

▼ insert구문

아무것도 안나오는것 같지만 ROBO3T에서 확인 할 수있다

*구문은 외우되 괄호등 사용법 하나하나에 집착하지말고!
사용방법만 눈에 익히자
────────────────────────────

▼ find 구문



for~ in 문을 활용하여 딕셔너리 하나하나의 값을 가져올 수 있다

same_ages = list(db.users.find({},{'_id':False}))

조건없이 모든 db값을 가져오려면 조건칸을 빈칸으로 만들기

user = db.users.find_one({'name':'bobby'})

find_one은 하나의 값만 가져오기!
바비가 여럿이어도 맨 위의 바비만 가져온당

────────────────────────────

▼ update_one 구문

바비를 찾아서 age값을 19로 업데이트

▼ update_many

모든 바비를 찾아서 age를 바꿔라!
굉장히 위험하기때문에 잘 사용하지않는다

────────────────────────────

▼ delete_one 구문

잘 사용하지X

▼ delete_many

잘 사용하지X

저장 - 예시
doc = {'name':'bobby','age':21}
db.users.insert_one(doc)

한 개 찾기 - 예시
user = db.users.find_one({'name':'bobby'})

여러개 찾기 - 예시 ( _id 값은 제외하고 출력)
same_ages = list(db.users.find({'age':21},{'_id':False}))

바꾸기 - 예시
db.users.update_one({'name':'bobby'},{'$set':{'age':19}})

지우기 - 예시
db.users.delete_one({'name':'bobby'})

13강 웹스크래핑 결과 저장하기

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

맨 위에 기본 코드양식 붙여넣기

print(rank,title,point)

대신에 딕셔너리 변수에 저장하고 반복문을 돌려서 넣나?

애초에 내가 적은곳이 반복문의 안이었다...

rank, title, star변수에 하나씩 들어가며 반복되는 반복문
그 반복문 안에 딕셔너리를 만들고 만들어질때마다 inser문을 이용하여 movies db에 넣기!

깔끔하게 들어갔다!

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

  • (1) 영화제목 '매트릭스'의 평점을 가져오기
from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client.dbsparta

## 코딩 할 준비 ##

target_movie = db.movies.find_one({'title':'매트릭스'})
print (target_movie['star'])
  • (2) '매트릭스'의 평점과 같은 평점의 영화 제목들을 가져오기
from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client.dbsparta

## 코딩 할 준비 ##

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'])
  • (3) 매트릭스 영화의 평점을 0으로 만들기

15강 3주차 끝 & 숙제 설명

https://www.genie.co.kr/chart/top200?ditc=D&ymd=20200403&hh=23&rtm=N&pg=1

이렇게 만들기!

힌트:순위와 곡제목이 깔끔하게 나오지 않을 거예요. 옆에 여백이 있다던가, 다른 글씨도 나온다던가.. 파이썬 내장 함수인 strip()을 잘 연구해보세요!
파이썬 문자열자르기? 파이썬 공백제거?

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://www.genie.co.kr/chart/top200?ditc=D&ymd=20200403&hh=23&rtm=N&pg=1',headers=headers)

soup = BeautifulSoup(data.text, 'html.parser')

trs = soup.select('.list-wrap > tbody > tr')

for tr in trs:
    number = tr.select_one(' td.number').text[0:2].strip()
    title = tr.select_one(' td.info > a.title').text.strip()
    artist  = tr.select_one(' td.info > a.artist ').text
    
    print(number,title,artist)

.strip() 공백제거
.text[0:2] 0번째 인덱스부터 2개글자

0개의 댓글