Script
웹개발 종합반 3주차 본문
1.Python
설치
1.아래 exe 실행파일 클릭하여 설치
https://www.python.org/ftp/python/3.8.6/python-3.8.6-amd64.exe

Add Python 3.8 to PATH 에 체크할 것!
2. 윈도우의 경우 추가적으로 Git bash 설치https://git-scm.com/
Git
git-scm.com
맥에서는 리눅스 환경이 구축되어 있지만,
윈도우는 그렇지 않기 때문에 Git bash를 사용하여
리눅스 커맨드를 사용할 수 있게된다.
++) 리눅스란?
윈도우와 같은 하나의 운영체제이며,
윈도우는 쉽게 사용 가능하나 제한이 많고, (for 일반인)
리눅스는 불친절하지만 이것저것 뜯어볼 수 있다는 차이가 있다. (for 개발자)
자유롭게 개조가 가능한 리눅스의 특성상
새로운 버전들 ex) 우분투,민트,Cent OS 등이 출시되었고
사용자들은 선택지가 많아지게 되었다.
기초 문법
- 리스트형 (Javascript의 배열형과 동일)
a_list = []
a_list.append(1) # 리스트에 값을 넣는다
a_list.append([2,3]) # 리스트에 [2,3]이라는 리스트를 다시 넣는다
# a_list의 값은? [1,[2,3]]
# a_list[0]의 값은? 1
# a_list[1]의 값은? [2,3]
# a_list[1][0]의 값은? 2
- Dictionary 형 (Javascript의 dictionary형과 동일)
a_dict = {}
a_dict = {'name':'bob','age':21}
a_dict['height'] = 178
# a_dict의 값은? {'name':'bob','age':21, 'height':178}
# a_dict['name']의 값은? 'bob'
# a_dict['age']의 값은? 21
# a_dict['height']의 값은? 178
- Dictionary 형과 List형의 조합
people = [{'name':'bob','age':20},{'name':'carry','age':38}]
# people[0]['name']의 값은? 'bob'
# people[1]['name']의 값은? 'carry'
person = {'name':'john','age':7}
people.append(person)
# people의 값은? [{'name':'bob','age':20},{'name':'carry','age':38},{'name':'john','age':7}]
# people[2]['name']의 값은? 'john'
- 함수
# 자바스크립트에서는
function f(x) {
return 2*x+3
}
# 파이썬에서
def f(x):
return 2*x+3
- 조건문
def oddeven(num):
if num % 2 == 0:
return True
else:
return False
result = oddeven(20) # True
- 반복문(파이썬에서의 반복문은, 리스트의 요소들을 하나씩 꺼내쓰는 형태이다.)
- 즉, 무조건 리스트와 함께 쓰인다.
fruits = ['사과','배','감','귤']
for fruit in fruits:
print(fruit)
# 사과, 배, 감, 귤 하나씩 꺼내어 찍힌다.
2.Python 패키지
패키지란?
패키지를 이해하기 위해서는 우선 모듈에 대해서 알아야 한다.
모듈은 부품이라는 뜻을 가지고 있고, 특정 기능을 위한 코드들을 담고 있다.
혼자서 기능할 수도 있지만, 이 모듈들이 여러개 모여서 보다 큰 기능을 구현하기도 한다.
바로 이것을 패키지라고 한다. 패키지== 여러 모듈들의 합==특정 기능 구현 코드의 완성체
즉 , 패키지란 어떤 기능들을 구현하는 모듈들의 집합이다.
따라서 패키지는 라이브러리 라고도 볼 수 있다.
그렇다면 패키지를 왜 사용할까?
바로 재사용성을 높이고 공유를 용이하게 하기 위해서다.
파이썬에서 어떤 폴더 안에 기능구현을 위한 py파일 여러개가 들어있다면
바로 그 파일들이 모듈들이고 그것을 담고 있는 폴더가 패키지인 것이다.
다만 패키지로써 폴더를 사용하기 위해선 __init 이라는 폴더를 생성해줘야 하는데
여기선 이정도로만 알아보고자 한다.
패키지 설치
위에서 패키지의 존재이유중 하나가 공유를 용이하게 하기 위해서라고 했다.
따라서 우리는 다른사람이 만든, 즉 외부 라이브러리를 이용해보고자
크롤링 할때 쓰이는 requests라는 패키지를 설치할 것이다.
(requests는 페이지를 가져오기 위한 라이브러리)
1.설정에 들어가 Python 인터프리터 누른후 + 클릭

2.requests 검색
3.패키지 설치
패키지 사용해보기
#모든 구의 IDEX_MVL 값 찍어주기
import requests # requests 라이브러리 설치 필요
r = requests.get('http://spartacodingclub.shop/sparta_api/seoulair')
rjson = r.json()
gus = rjson['RealtimeCityAir']['row']
for gu in gus:
print(gu['MSRSTE_NM'], gu['IDEX_MVL'])
3.크롤링
크롤링이란?
크롤링이란 쉽게 얘기하면 웹사이트에서 원하는 데이터를 가져오는 것이다.
html 페이지를 가져와서 html,css등을 파싱한 뒤, 그중 필요한 데이터만 추출하거나,
open api를 가져와서 그중 필요한 데이터만 추출하는 것을 뜻한다.
파이썬에서 크롤링을 위해 사용하는 대표적인 라이브러리는
requests, BeautifulSoap이 있다.
requests는 페이지를 가져오기 위한 라이브러리이며,
BeautifulSoap은 가져온 웹페이지를 기반으로 사용자가 원하는 데이터를 추출할 수 있도록 도와주는 라이브러리이다.
requests와 BeautifulSoap의 사용
먼저 requests를 설치하듯이 BeautifulSoap도 설치해주어야 한다.
bs4( BeautifulSoap4)를 검색하여 설치해주자.
import requests
from bs4 import BeautifulSoup
# URL을 읽어서 HTML를 받아오고,
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)
# HTML을 BeautifulSoup이라는 라이브러리를 활용해 검색하기 용이한 상태로 만듦
soup = BeautifulSoup(data.text, 'html.parser')
# select를 이용해서, tr들을 불러오기
movies = soup.select('#old_content > table > tbody > tr')
# movies (tr들) 의 반복문을 돌리기
for movie in movies:
# movie 안에 a 가 있으면,
a_tag = movie.select_one('td.title > div > a')
if a_tag is not None:
# a의 text를 찍어본다.
print (a_tag.text)
4.mongoDB
DB란?
DB(Database)란 데이터들을 정리해두어 나중에 재사용시 잘 찾을 수 있게 하기 위해 사용한다.
이 Database는 크게 두가지 종류로 나뉘는데 하나는 RDBMS(SQL), 또 다른 하나는 No-SQL이다.
- RBDMS(SQL) - ex)Oracle, MySQL
- 행/열의 생김새가 정해진 엑셀에 데이터를 차곡차곡 쌓아올리는것과 같다.
- 정형화되어있는 만큼,일관성이나 분석에 용이하지만, 데이터들 사이에 새로운 데이터를 넣는 것은 어렵다.
- No-SQL - ex) mongoDB
- 딕셔너리(key:value) 형태로 데이터를 저장해둔다. 따라서 데이터 하나 하나 같은 값들을 가질 필요가 없다.
- 여기저기 널부러져 있는 형태이므로 자유로운 형태의 데이터 적재에 유리하지만, 일관성이 부족할 수 있다.
mongoDB
요즘 트렌드는 클라우드에서 database를 받아와 사용하는 것이다.
따라서 여기서도 최신 클라우드 서비스인 mongoDB Atlas를 사용해보기로 하자.
1.mongoDB 시작하기
로그인 - 선호언어 python - 국가선택후 create cluster (shared) 클릭
2.연결준비하기
Allow Access from Anywhere 클릭 → Add IP address 클릭
Username, Password에 test / sparta 입력 → Create Database User 클릭
Choose a connection method 클릭
3.mongoDB 연결하기
mongoDB 라는 프로그램을 조작하려면, 이를 위한 라이브러리인 pymongo가 필요하다.
pymongo와 dnspython이라는 패키지를 설치해주도록 하자.
다시 mongodb로 돌아와 connect 누른 후 - connect your application - driver에 python
version에 3.6 or later - 밑에 있는 코드 복사
pymongo 기본 코드
from pymongo import MongoClient
client = MongoClient('여기에 URL 입력') # 이 안에 복사한 코드 입력
db = client.dbsparta
url 입력 부분에 복사한 코드 입력하면 사용할 준비 완료
(password 부분은 설정했던 비밀번호인 sparta로 바꿔준다.
또, myFIrstDataBase 라고 되어있는 부분을 db명인 cluster0으로 바꿔주어야 한다.)
pymongo로 db 조작하기
user라는 db파일에 다음과 같은 값을 넣어보자.
doc = {
'name':'bob',
'age':27
}
db.users.insert_one(doc)

다음과 같이 값이 잘 들어와 있는 것을 볼 수 있다,
pymongo 코드요약
# 저장 - 예시
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'})
여기서 필요한 것을 적절하게 사용하도록 한다.
3주차 요약
3주차에서는 파이썬에대한 기초문법과,
requests와 BeautifulSoap 이라는 파이썬의 패키지를 통해 크롤링하는법
(오늘 해본것은 정확히 말하자면 스크래핑)
마지막으로 mongoDB를 이용하여 서버에 데이터를 저장하고 호출하는법을 배웠다,
'항해99 > 사전준비' 카테고리의 다른 글
| 웹개발 종합반 5주차 (0) | 2022.07.01 |
|---|---|
| 웹개발 종합반 4주차 (0) | 2022.06.29 |
| 웹개발 종합반 2주차 (0) | 2022.06.21 |
| 웹개발 종합반 1주차 (0) | 2022.06.21 |