반응형
- pymongo 라는 라이브버리로 mongoDB를 조작한다.
- pymongo 기본 코드
- insert
- find
- update
- delete
from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client.dbsparta
Insert
doc = {'name':'bobby', 'age':21}
db.users.insert_one(doc)
- db = client.dbsparta
- bsparta라는 디비에 접속한다, 없으면 생성한다.
* 코드를 저장하고, Roto 3T에 들어가서 새로고침하면
find
- {}빈 채로 두면 모두 가져온다.
#find
same_ages = list(db.users.find({'age':32},{'_id':False}))
for personin same_ages:
print(person)
- 여러 개가 검색될 때, 가장 위에 한가지만 가져온다. _id속성은 표지하지 않는다.
user = db.users.find_one({'age':32},{'_id': False})
print(user)
update
db.users.update_one({'name':'bobby'},{'$set':{'age':19}})
- {'name':'bobby'} 에 해당하는 객체를 바꾼다.
- update_many도 있으나, 위험하기 때문에 잘 쓰지 않음
delete
db.users.delete_one({'name':'bobby'})
- delete_many 도 있으나, 위험하기 때문에 잘 쓰지 않음
Quiz. (웹 크롤링 시간에 배운 파이썬 파일을 활용)
- 영화 매트릭스의 평점 저장
movie=db.find_one({'title':'매트릭스'},{'_id':False})
same_point=movie['point']
2. 매트릭스의 평점과 같은 영화제목 저장
same_movies=db.find({'point':same_point},{'_id':False})
for same in same_movies:
print(same['title'])
3. 매트릭스의 평점을 0으로 만들기
db.update_one({'title':'매트릭스'},{'$set':{'point':0}})
- robo 3T에서 매트릭스의 평점이 0으로 바뀐 것을 확인할 수 있다.
Homework: 지니 사이트에서 음악 순위차트 크롤링하기
- https://www.genie.co.kr/chart/top200?ditc=D&ymd=20200403&hh=23&rtm=N&pg=1
- 순위를 가져올 떄, 뒤에 필요없는 글도 같이 가져와진다.
- 해결하기 위해서, text[0:2]로 2자릿수까지 가져오고, strp()으로 공백을 제거한다.
import requests
from bs4 import BeautifulSoup
from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client.dbsparta
url="https://www.genie.co.kr/chart/top200?ditc=D&ymd=20200403&hh=23&rtm=N&pg=1"
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(url, headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')
trs=soup.select('#body-content > div.newest-list > div > table > 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.strip()
print(number, title, artist)
반응형
'Web Development' 카테고리의 다른 글
[웹개발종합반] 4주차 개발일지 (1) - Flask, Mongdb, pymongo, 웹크롤링 (0) | 2021.07.30 |
---|---|
[프론트엔드] 입문자 공부 방법, 로드맵, 취업 포트폴리오, 코딩 빨리 배우는 법, 코딩 유튜브 추천 (0) | 2021.07.27 |
[웹개발종합반] 3주차 개발일지 (1) - JQuery, Ajax, API 활용(복습)/ Python 기초/웹크롤링, 웹스크래핑 (0) | 2021.07.26 |
[웹개발종합반] 2주차 개발일지 -JS, JQuery, Ajax (0) | 2021.07.24 |
[웹개발종합반] 1주차 개발일지 (2). JavaScript 기초 (0) | 2021.07.24 |