Post

[WebDev] Python & Flask 서버

Python

프로그래밍 언어

IF

조건문(조건이 참(True), 거짓(False) 중 하나를 만족할 때 실행되는 파이썬 문법)

1
2
3
4
5
6
7
8
if 조건1:
    # 조건1이 참일 때 실행할 코드
elif 조건2:
    # 조건1이 거짓이고 조건2가 참일 때 실행할 코드
elif 조건3:
    # 조건1과 조건2가 모두 거짓이고 조건3이 참일 때 실행할 코드
else:
    # 위의 모든 조건이 거짓일 때 실행할 코드

FOR

반복문(요소의 리스트를 반복하는 파이썬 문법)

1
2
3
4
5
6
a = [1, 2, 3, 4]
# a라는 숫자 값이 담긴 리스트

for fruit in a:
	print(a)
# a라는 리스트의 요소를 돌아가면서 순서대로 반복

FUNCTION

함수(같은 행위를 반복하게 하는 것)

1
2
3
4
5
6
7
8
9
# 파이썬으로 평균 구하는 함수
def average(numbers):
    total = 0
    for number in numbers:
        total += number
    return total / len(numbers)

numbers = [1, 2, 3, 4, 5]
print(average(numbers)) 

virtual environment

가상환경(파이썬 배포 패키지들을 설치하거나 업그레이드하는 것을 가능하게 함)

  1. 명령팔레트 열기(env 검색)
  2. Python : Create Environment(환경 만들기)
  3. Venv 클릭하면 설치됨.

packages

패키지는 모듈(일종의 기능들 묶음)을 모아 놓은 단위입니다

패키지를 설치할 떄는 PIP 약자를 사용함 pip install (패키지명)

wep scraping

웹 스크랩핑(인터넷에서 정보를 가져오는 작업)
API가 없더라도 내가 원하는 페이지의 데이터를 가져올 수 있다

1
2
3
4
5
6
7
8
9
10
11
12
// 선택자를 사용하는 방법 (copy selector)
soup.select('태그명')
soup.select('.클래스명')
soup.select('#아이디명')

soup.select('상위태그명 > 하위태그명 > 하위태그명')
soup.select('상위태그명.클래스명 > 하위태그명.클래스명')

// 태그와 속성값으로 찾는 방법
soup.select('태그명[속성=""]')
//  개만 가져오고 싶은 경우
soup.select_one('위와 동일')

.contents로 내부의 데이터를 전부 리스트에 값으로 담을 수 있다

1
2
3
4
soup.select('.클래스명').contents

soup.select('.클래스명').contents[1]
# 리스트로 나열된 것 중에 1번째 데이터 들고 오기

.text로 각각 지정된 <tr>태그 안에서 데이터를 찾아낼 수 있다.

1
2
tr = soup.select_one('.클래스명')
찾는 데이터 클래스명 = tr.select_one('.찾는 데이터 클래스명').text

Python의 Flask 서버

웹이 동작하는 서버

  • 로컬 개발환경: 컴퓨터 한 대로 서버와 요청도 만든다
    클라이언트 = 서버

    flask 폴더 구조

1
2
3
4
5
flask
|— venv
|— app.py (서버)
|— templates
         |— index.html (클라이언트 파일)

Flask 패키지 설치

터미널에 pip install flask 누르고 Enter

Flask 기초 코드(주소,요청에 따라 응답을 다르게 해주는 서버를 만듦)

1
2
3
4
5
6
7
8
9
10
11
12
13
from flask import Flask
app = Flask(__name__)

@app.route('/')
def home():
   return 'This is Home!'

@app.route('/mypage')
def mypage():  
   return 'This is My Page!'

if __name__ == '__main__':  
   app.run(debug=True)

index.html에서 context라는 딕셔너리에 원하는 데이터를 넣는다
key 에는 HTML에서 사용할 이름을, value에는 Python 변수를 넣는다

1
2
3
4
5
context = {
	"HTML에서 사용할 이름1": 변수명1,
	"HTML에서 사용할 이름2": 변수명2,
}
return render_template('index.html',  data=context)

반복문 사용(값을 리스트 그대로가 아닌 하나씩 출력)

1
2
3
<body>
    
</body>

<ol>태그 사용하면 숫자나 알파벳 같은 마커가 붙는다(ordered list)

1
2
3
4
5
<body>
  <ol>
    
  </ol>
</body>

3주차 feedback

: 여러가지 함수들을 사용해서 활용하는 법을 연습해야 한다

This post is licensed under CC BY 4.0 by the author.