오늘은 대망의 파이썬에 대해 공부하였다. 파이썬과 데이터베이스로 할 수 있는 재밌는 것들을 정리한다.
심지어 클라우드 데이터 베이스라고 한다!!!
1. Python 기초
1-0. 파이썬은 줄을 잘 맞춰야 한다!
1-1. Print
print(‘hello world’)
1-2. Dictionary
a = {'name':'영수', 'age':24}
print(a['name'])
1-3. def
def hey():
print('헤이!')
1-4. 조건문
age = 25
if age > 20:
print('성인입니다')
else:
print('청소년입니다')
1-5. 반복문
ages = [5,10,13,23,25,9]
for a in ages:
if a > 20:
print('성인입니다')
else:
print('청소년입니다')
1-6. 파이썬 파일 실행
python3 파일이름.py
2. 가상환경 만들기
⊞ Windows : 인터프리터 선택
Mac : 3.8.6. 64-bit (나의 파이썬 버전)
⊞ Windows Mac : 3.8.6. 64-bit
⊞ Windows : python -m venv venv
Mac : python3 -m venv venv
3. pip 와 requests
라이브러리 : 누군가 만들어 놓은 코드 조각
pip : 파이썬 라이브러리 관리
Requests : fetch 의 역할
Requests python docs : requests 라는 라이브러리 사용법
pip install requests 입력
- zsh: command not found: pip 오류가 나왔다면 pip를 설치해서 해결될 수 있다
- (pip 설치 참고자료: https://sixpeople.tistory.com/13)
4. 구 미세먼지 농도 뽑기
import requests
r = requests.get('http://spartacodingclub.shop/sparta_api/seoulair')
rjson = r.json()
rows = rjson['RealtimeCityAir']['row']
for a in rows:
gu_name = a['MSRSTE_NM']
gu_mise = a['IDEX_MVL']
print(gu_name,gu_mise)
5. venv 로 바꿔 주기
6. Beautiful Soup 4 (bs4) 라이브러리 설치
pip install bs4
7. 크롤링
웹페이지 검사에 나오는 HTML의 어떤 부분을 솎아내서 가져오는 것
1) copy selector
검사 > Copy - copy selector
에서 복사된 것을
soup.select_one(‘이 안에 붙여넣기’)
import requests
from bs4 import BeautifulSoup
URL = "https://movie.daum.net/ranking/reservation"
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')
title = soup.select_one('#mainContent > div > div.box_ranking > ol > li:nth-child(6) > div')
print(title.text)
2) 제목 가져오기
import requests
from bs4 import BeautifulSoup
URL = "https://movie.daum.net/ranking/reservation"
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')
lis = soup.select('#mainContent > div > div.box_ranking > ol > li')
for li in lis:
title = li.select_one('.link_txt')
print(title.text)
3) 순위와 평점 가져오기
검사> 네모창과 화살표 아이콘 누르기
원하는 자료 클릭
import requests
from bs4 import BeautifulSoup
URL = "https://movie.daum.net/ranking/reservation"
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')
lis = soup.select('#mainContent > div > div.box_ranking > ol > li')
for li in lis:
rank = li.select_one('.rank_num').text
title = li.select_one('.link_txt').text
rate = li.select_one('.txt_grade').text
print(rank,title,rate)
4) python 문서 정리 팁
.strip() : 띄어쓰기 제거
.repalce() : 특정문자바꾸기
8. DB 기본 개념
DB: DataBase : 잘 가지고 오는 게 중요
SQL vs NoSQL (Not only SQL)
SQL: 정해진 칸에 데이터 넣기
장점: 사람이 실수할 일이 적다 (비즈니스가 크고 잘 안 바뀌는 곳)
NoSQL: 데이터를 내 마음대로 저장
장점: 비즈니스의 유연성 (바꿀 수 있음)
요즘: DB를 클라우드 환경에 올려 놓는다 (ex: mongoDB)
9. dnspython pymongo 설치
pip install dnspython
pip install pymongo
pip install certifi
10. MongoDB 사용법
1) MongoDB 에서 connect 클릭하기
2) Drivers 클릭하기
3) Python - 3.6 or later 클릭하기 > 주소 복사
11. MongoDB
11-1. pymongo로 MongoDB 조작하기
# 저장
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'})
11-2. 자료 넣기
from pymongo import MongoClient
import certifi
ca = certifi.where()
client = MongoClient('mongodb+srv://sparta:test@cluster0.0uiki8z.mongodb.net/?retryWrites=true&w=majority', tlsCAFile=ca)
db = client.dbsparta
doc = {
'name' : '영수',
'age' : 24
}
db.users.insert_one(doc)
12. 퀴즈
12-1. 영화 <자전거 도둑>의 평점 가져오기
from pymongo import MongoClient
import certifi
ca = certifi.where()
client = MongoClient('mongodb+srv://sparta:test@cluster0.0uiki8z.mongodb.net/?retryWrites=true&w=majority', tlsCAFile=ca)
db = client.dbsparta
info = db.movies.find_one({'title':'자전거 도둑'})
print(info['rate'])
12-2. 영화 <자전거 도둑>과 평점이 같은 것들의 제목을 가져오기
from pymongo import MongoClient
import certifi
ca = certifi.where()
client = MongoClient('mongodb+srv://sparta:test@cluster0.0uiki8z.mongodb.net/?retryWrites=true&w=majority', tlsCAFile=ca)
db = client.dbsparta
info = db.movies.find_one({'title':'자전거 도둑'})
samerank = info['rate']
movielist = list(db.movies.find({'rate' : samerank}))
for a in movielist :
print(a['title'])
12-3. 영화 자전거 도둑의 평점을 0 으로 만들기
from pymongo import MongoClient
import certifi
ca = certifi.where()
client = MongoClient('mongodb+srv://sparta:test@cluster0.0uiki8z.mongodb.net/?retryWrites=true&w=majority', tlsCAFile=ca)
db = client.dbsparta
db.movies.update_one({'title':'자전거 도둑'},{'$set':{'rate':0}})
13. 과제
지니 뮤직에서 순위, 제목, 가수 가져오기
import requests
from bs4 import BeautifulSoup
URL = "https://www.genie.co.kr/chart/top200?ditc=M&rtm=N&ymd=20230101"
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')
lis = soup.select('#body-content > div.newest-list > div > table > tbody >tr')
for li in lis:
rank = li.select_one('td.number').text[0:2].strip( )
title = li.select_one('a.title.ellipsis').text.strip( )
artist = li.select_one('a.artist.ellipsis').text.strip( )
print(rank, title,'-', artist)
14. 소감
흥미가 있었던 과목에 대해 알게 되는 건 즐거움이고 기쁨이다. 언젠가 작은 무언가를 만들 수도 있지 않을까 하는 희망이 보이는 것 같다. 다만 의문이 생기면 종종 해결할 때까지 막혀 버려서 진도가 조금 더딘 것 같다. 파이팅...!
'학습 내용 정리 > python' 카테고리의 다른 글
파이썬 문법 뽀개기 : 심화 (0) | 2024.07.19 |
---|---|
파이썬 문법 뽀개기 : 기초 (0) | 2024.07.19 |
PULL methods 미스테리 3 : 해결완료 (0) | 2023.05.22 |
PULL Methods 미스테리 2 (0) | 2023.05.22 |
PULL methods 미스테리 (0) | 2023.05.21 |