반응형
💡수업 목표💡
- 파이썬 기초 문법을 안다.
- 원하는 페이지를 크롤링 할 수 있다.
- pymongo를 통해 mongoDB를 제어할 수 있다.
2022.08.26 - [스파르타코딩클럽/웹개발종합반] - 웹개발종합반 개발일지 | 3주차 - 1강 파이썬 설치 및 Pycharm 설정
2022.08.26 - [스파르타코딩클럽/웹개발종합반] - 웹개발종합반 개발일지 | 3주차 - 2강
2022.08.26 - [스파르타코딩클럽/웹개발종합반] - 웹개발종합반 개발일지 | 3주차 - 3,4,5,6,7,8강
2022.08.27 - [스파르타코딩클럽/웹개발종합반] - 웹개발종합반 개발일지 | 3주차 - 9,10,11강 mongoDB Atlas로 시작하기
Python으로 mongoDB 조작하기
python으로 mongoDB를 사용하려면 특별한 라이브러리가 필요하다.
- pymongo : noSQL인 mongoDB를 다루기 위한 파이썬 라이브러리.
- dnspython : Python용 DNS 툴킷. 쿼리, 영역 전송, 동적 업데이트, 네임서버 테스트 및 기타 여러 작업에 사용.
Preferences > Project : pythonPrac > Python Interpereter에서 해당 라이브러리를 설치해준다.
pymongo로 mongoDB연결하기
from pymongo import MongoClient
client = MongoClient('여기에 URL 입력')
db = client.dbsparta
별다른 오류 없이 성공했다면 성공적으로 DB에 올라간 것이다.
mongoDB 서버를 확인해보면 내가 입력한 데이터들이 제대로 올라간것을 확인 할수 있다.
pymongo로 데이터 추가/조회/수정/삭제 다루기
DB 데이터 추가
doc = {
'name' : 'bob',
'age' : 27
}
db.users.insert_one(doc)
db.users.insert_one({'name':'bobby','age':21})
db.users.insert_one({'name':'kay','age':27})
db.users.insert_one({'name':'john','age':30})
DB 데이터 조회
# 모든 데이터 뽑아보기
all_users = list(db.users.find({},{'_id':False}))
for user in all_users:
print(user)
#딱 하나 결과값
user = db.users.find_one({'name':'bobby'})
print(user['age'])
DB 데이터 수정
# 특정 데이터 수정하기
db.users.update_one({'name':'bobby'},{'$set':{'age':19}})
user = db.users.find_one({'name':'bobby'})
print(user)
DB 데이터 삭제
# 특정 데이터 삭제하기
db.users.delete_one({'name':'bobby'})
user = db.users.find_one({'name':'bobby'})
print(user)
Quiz. 영화 랭킹 웹스크랩핑 결과 이용하기
Q1. 웹스크랩핑 결과 저장하기
import requests
from bs4 import BeautifulSoup
from pymongo import MongoClient
client = MongoClient('-----URL-----')
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://movie.naver.com/movie/sdb/rank/rmovie.naver?sel=pnt&date=20210829',headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')
title = soup.select_one('#old_content > table > tbody > tr:nth-child(2) > td.title > div > a')
movies = soup.select("#old_content > table > tbody > tr")
for movie in movies:
a = movie.select_one("td.title > div > a")
if a is not None :
title = a.text
rank = movie.select_one("td:nth-child(1) > img")["alt"]
star = movie.select_one("td.point").text
print(rank, title, star)
doc = {
'title': title,
'rank': rank,
'star': star
}
db.movies.insert_one(doc)
Q2. 영화제목 '가버나움'의 평점을 가져오기
movie = db.movies.find_one({'title':'가버나움'})
print(movie['star'])
Q3. '가버나움'의 평점과 같은 평점의 영화 제목들을 가져오기
movie = db.movies.find_one({'title':'가버나움'})
q_star = movie['star']
find_movies = db.movies.find({'star' : q_star});
for find_movie in find_movies:
print(find_movie['title'])
Q4. '가버나움' 영화의 평점을 0으로 만들기
movie = db.movies.find_one({'title':'가버나움'})
q_star = movie['star']
db.movies.update_one({'title':'가버나움'},{'$set':{'star':"0"}})
movie = db.movies.find_one({'title':'가버나움'})
print(movie)
반응형
'스파르타코딩클럽 > 웹개발' 카테고리의 다른 글
웹개발종합반 개발일지 | 3주차 (0) | 2022.08.28 |
---|---|
웹개발종합반 개발일지 | 3주차 - 숙제 (0) | 2022.08.28 |
웹개발종합반 개발일지 | 3주차 - 9,10,11강 mongoDB Atlas로 시작하기 (1) | 2022.08.27 |
웹개발종합반 개발일지 | 3주차 - 3,4,5,6,7,8강 (0) | 2022.08.26 |
웹개발종합반 개발일지 | 3주차 - 2강 (0) | 2022.08.26 |