상세 컨텐츠

본문 제목

[스파르타코딩클럽] 웹개발종합반 (국비) 3주차 기록(2):: 몽고디비 연결 | DB 조작

성장일지

by 모모87 2023. 3. 18. 18:24

본문

파이썬을 활용 디비연결하는 강의를 들었다.

다하고나서는 크롤링 디비조작에 자신감이 붙었다.

다른 강의도 이렇게 하면 빨리 따라 갈 수 있을 것 같아서 기분이 좋다.

 


 

 

아래 라이브러리 설치

pip install dnspython
pip install pymongo

 

 

클러스터 커넥트

설정 후 복사 붙여넣기

 

 

 

몽고디비랑 파이썬 연결

 

from pymongo import MongoClient
client = MongoClient('mongodb+srv://sparta:<password>@cluster0.bybhipg.mongodb.net/?retryWrites=true&w=majority')
db = client.dbsparta

 

연결 후 작동여부 확인

 

from pymongo import MongoClient
client = MongoClient('mongodb+srv://sparta:test@cluster0.bybhipg.mongodb.net/?retryWrites=true&w=majority')
db = client.dbsparta


doc={
    'name':'영수',
    'age':24
}
db.users.insert_one(doc)

 

Browse Collections  이동

 

all_users = list(db.users.find({},{'_id':False}))
# 저장 - 예시
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'})

 

 

웹스크래핑 디비에 저장하기

 

 

퀴즈1.지니뮤직의 1~50위 곡을 스크래핑 해보세요.

from pymongo import MongoClient
client = MongoClient('mongodb+srv://sparta:test@spartacoding.ksiwocs.mongodb.net/?retryWrites=true&w=majority')
db = client.dbsparta

import requests
from bs4 import BeautifulSoup

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=M&rtm=N&ymd=20210701#',headers=headers)

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

# 지니뮤직 1-50위 곡을 스크래핑 하기 (순위/곡제목/가수)
gnmusic_trs = soup.select('#body-content > div.newest-list > div > table > tbody > tr')
for tr in gnmusic_trs:
    rank = tr.select_one('td.number').text[0:2].strip()
    title = tr.select_one('td.info > a.title.ellipsis').text.strip()
    singer = tr.select_one('td.info > a.artist.ellipsis').text.strip()
    if rank is not None:
        doc = {
            'title':title,
            'rank':rank,
            'singer':singer
        }
        db.music.insert_one(doc)

 

 

결과

 

 

반응형

관련글 더보기