3주차에는 파이썬을 배웠다
<주요 강의>
파이썬으로 서버 만들기
몽고디비와 친해지기
파이썬으로 네이버 영화목록을 가져와서
몽고디비에 넣기
<설치>
파이썬
(윈도우용, 맥용)
파이썬 공부하기
파이썬을 사용하는 이유
컴퓨터한테 명령을 내리기 위해
파이썬을 다운로드하는 이유
파이썬의 언어를 알아들을 수 있도록
번역해 주는 번역패키지를 세팅하기 위해
세팅하면 컴퓨터가 명령어를 알아들을 수 있음
파이썬의 문법은
굉장히 직관적이다
예) print는 출력을 의미
변수
a = '대한'
b = '민국'
print (a+b)
결과: 대한민국
자료형
a = ['사과','배','감']
print (a[0])
결과: 사과
dictionary
a = {'name':'영수', 'age':24}
print (a['name'])
결과: 영수
함수
자바스크립트에서는 { } 중괄호로 표현
파이썬에서는 : 콜론으로 표현
:은 내용물이라고 인식
파이썬은 :이후 탭이 꼭 들어가야 함
def hey():
print('헤이!')
hey()
결과: 헤이!
변수를 받는 함수
def sum(a,b,c):
return a+b+c
result = sum(1,2,3)
print(result)
결과:6
반복문
ages = [5,10,13,23,25,9]
for a in ages:
if a > 20:
print('성인입니다')
else:
print('청소년입니다')
결과:
청소년입니다
청소년입니다
청소년입니다
성인입니다
성인입니다
청소년입니다
조건문
age = 25
if age > 20
print('성인입니다')
else:
print('청소년입니다')
결과:성인입니다
가상환경 만들어보기
= 남이 만든 library 설치+사용법
가상환경
: library를 담는 환경
터미널에
윈도우는 python -m venv venv
맥은 $ python3 -m venv venv
라고 적고 엔터 치면
venv 폴더가 생성된다
*참고로 맥에는 $가 이미 붙어있는 경우
python3 -m venv venv만 적고 엔터 친다
다양한 라이버리들
예) requests
requests는 fetch와 비슷하다
데이터를 요청/가져오는 역할을 한다
터미널에 $ pip install requests 치고 엔터
그러면 API의 값을 가져온다
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)
웹스크래핑(크롤링)
데이터를 가져와서 정리하기
터미널에 $ pip install bs4 치고 엔터
기본코드에서 bs4를 사용한 후
원하는 URL을 넣어서 soul.select를 사용
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)
터미널
1 가디언즈 오브 갤럭시: Volume 3 8.9
2 슈퍼 마리오 브라더스 8.5
3 극장판 짱구는 못말려: 동물소환 닌자 배꼽수비대 8.8
4 드림 7.8
5 스즈메의 문단속 7.3
6 분노의 질주: 라이드 오어 다이 7.5
7 존 윅 4 7.5
8 더 퍼스트 슬램덩크 8.3
9 롱디 7.8
10 뮤지컬 공연실황, 알쏭달쏭 캐치! 티니핑 <신비한 상자를 열어라!> 0.0
11 옥수역귀신 6.2
12 킬링 로맨스 6.2
13 클로즈 7.3
14 리바운드 8.9
15 스트리머 5.7
16 메리 마이 데드 바디 5.5
17 무명 7.9
18 스프린터 8.7
19 슬픔의 삼각형 9.8
20 리턴 투 서울 10.0
DB 데이터베이스
역할
방에서 물건을 잘 찾기 위해 방정리를 하듯
데이터베이스의 역할은
잘 쌓는 것이 아닌 잘 가져오는 것이다
잘 저장하는 것이 아닌
잘 가져오는 것!
두 가지 종류
1. SQL (RDBMS)
정형화된 틀이 있어서
이미 정해진 칸에 값을 넣는 것
like 엑셀
장점 - 실수 확률 적음, 빠름
사용범위:
대기업, 비즈니스가 자주 바뀌지 않는 곳
2. NoSQL (SQL뿐만 아니다라는 뜻)
정형화된 틀이 없음
유연한 틀
사용범위:
스타트업
DB의 실체
엑셀에 데이터 넣는 것과 비슷
데이터를 쌓고 잘 가져오는 기능
요즘은 인터넷 환경에
데이터를 올려놓곤 한다
트렌드는 클라우드
예) MongoDB, AWS
MongoDB(몽고디비) 서비스 가입하기
account.mongodb.com
몽고디비에 파이썬 연결하기
몽고디비를 조작하려면
두 개의 라이브러리가 필요하다
Visual studio 내 터미널에서
pymongo과 dnspython를 각각 설치하자
예) $ pip install pymongo
$ pip install dnspython
몽고디비 연결하기
1.Visual Studio에 다음과 같이 적기
2.내 URL 적기
from pymongo import MongoClient
client = MongoClient('여기에 URL 입력')
db = client.dbsparta
URL은 몽고디비의 주소
이 주소는 몽고디비 사이트에서 가져올 수 있다
Cloud: MongoDB Cloud
account.mongodb.com
pymongo로 DB 연결/조작하기
필요한 코드를 사용, 저장 후 몽고디비에서 browse connection
# 저장 - 예시
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'})
웹스크레핑 데이터 저장하기
실습
지니뮤직 사이트
<https://www.genie.co.kr/chart/top200?ditc=M&rtm=N&ymd=20230101>
순위 / 곡 제목 / 가수를 스크래핑 하기
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=20230101',headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')
trs = soup.select('#body-content > div.newest-list > div > table > tbody > tr')
for tr in trs:
title = tr.select_one('td.info > a.title.ellipsis').text.strip()
rank = tr.select_one('td.number').text[0:2].strip()
artist = tr.select_one('td.info > a.artist.ellipsis').text
print(rank,title, artist)
터미널 결과:
1 Ditto NewJeans
2 사건의 지평선 윤하 (YOUNHA)
3 Hype boy NewJeans
4 OMG NewJeans
5 ANTIFRAGILE LE SSERAFIM (르세라핌)
...
49 잘가요 주호
50 우린 그렇게 사랑해서 강민경 (다비치) & 잔나비 최정훈
[느낀 점]
3주차부터 곤욕이다
너무 어렵다
모두가 쉽다는 파이썬이 내겐 혼돈 그 자체
강의를 따라가는데
답이 다르게 나와서 또 혼돈 ㅎㅎ
그래도 해야지 뭐
완주할 날을 손꼽아 기다리게 된다
그래도 새로운 정보를 배워서 좋았다!
'웹개발 종합반' 카테고리의 다른 글
첫 번째 미니프로젝트 - 화성땅 공동구매 (0) | 2023.05.11 |
---|---|
웹개발 종합반 4주차 (2) (0) | 2023.05.11 |
웹개발 종합반 4주차 (1) (0) | 2023.05.11 |
웹개발 종합반 2주차 (0) | 2023.04.25 |
웹개발 종합반 1주차 (0) | 2023.04.24 |