| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
- workflow
- 로드 밸런싱
- SSL
- certbot
- aws
- 이미지 압축
- TLS
- pm2
- 3-Way HandShake
- webp
- DNS
- 자동화
- gitgub actions
- 리버스 프록시
- 무중단
- 이미지 포맷 변경
- 이미지 최적화
- 브라우저
- 인증서
- nextJS
- 렌더링 과정
- CI
- ec2
- 검색엔진최적화
- https
- tcp
- 배포
- 성능 개선
- SSH
- nginx
- Today
- Total
개발일기
Flask에 대해 알아보기 본문
개요
카카오 지도 api에서 제공하는 데이터에는 한계가 있다. 카카오 지도에서 볼 수 있는 매장의 데이터의 양과 제공해주는 매장의 데이터의 양은 차원이 다르다. 그렇기 때문에 크롤링을 사용해서 데이터를 가져와 보기로 했다. 그러기 위해선 백엔드 부분을 알아야 한다. 열심히 찾아본 결과 Flask와 BeautifulSoup를 사용해서 크롤링을 진행해 보기로 했다. 먼저 Flask에 대해 알아보자.
Flask란?
Python으로 작성된 마이크로 웹 프레임워크이다. 경량화되고 유연성이 높아, 웹 애플리케이션 개발에 널리 사용된다. 라고 설명되어 있다. 솔직히 무슨 말인지 잘 와 닿지 않는다. 하지만 공식문서에서 제공하는 가장 기본적인 코드를 확인해보면 정말 간단하게 작성되어 있다. 왜 사용되는지 한번 확인해 보자.
1. 간결하고 이해하기 쉬운 코드를 작성할 수 있도록 설계되어있다.
2. 필요에 따라 확장할 수 있는 다양한 플러그인을 지원한다.
3. URL과 실행할 함수를 매핑하는 라우팅을 제공한다.
4. HTML 문서에 동적 콘텐츠를 삽입할 수 있는 템플릿 엔진(Jinja2)을 사용한다.
5. 템플릿에서 Python 표현식을 사용하여 HTML을 동적으로 생성할 수 있다.
6. 디버깅 기능을 제공하여 개발 중 발생하는 오류를 쉽게 찾을 수 있다.
Flask 기본 구조
설치
pip install Flask
기본 구조
from flask import Flask
//Flask 애플리케이션 객체를 생성한다.
app = Flask(__name__)
//URL 라우트를 설정한다. '/' 경로로 요청이 들어오면 'hello_world' 함수가 실행된다.
@app.route('/')
def hello_world():
return 'Hello, World!'
if __name__ == '__main__':
//애플리 케이션을 실행한다. 'debug=True'는 개발 모드로 실행하며 코드 변경 시 자동으로 서버를 재시작 한다.
app.run(debug=True)
요청 데이터 처리
from flask import request
@app.route('/api_url', methods=['POST'])
def api_url():
arg1 = request...
arg2 = request...
'request' 객체를 사용하여 클라이언트로부터 전달된 데이터를 처리할 수 있다.
request.args : URL의 쿼리 매개변수에 접근
request.form : 폼 데이터에 접근
request.files : 업로드된 파일에 접근
request.values : args와 form이 복합적으로 사용된 데이터에 접근
request.json : JSON 형식의 요청 본문에 접근
마무리
간단하게 Flask는 이렇게 설명 되는 것 같다. 현재는 카카오맵 크롤링은 진행하면서 간단하게 프론트엔드에서 요청하는 데이터를 처리할 때 사용중이긴 하지만 아무것도 모르는 상태에서 감을 잡을 수 있을만큼 제공되는 기본 코드가 간단하다. 더 공부하고, 작성한 코드는 나중에 또 공유할 예정이다.
'SideProject(My-Selectshop-Finder)' 카테고리의 다른 글
| 비밀번호 표시에 웹 접근성 및 사용자를 위한 tabIndex 활용 (0) | 2024.08.04 |
|---|---|
| 카카오 지도 크롤링 시도하기(Flask, Selenium, bs4) (0) | 2024.07.25 |
| 셀레니움(Selenium)과 뷰티풀 수프(Beautiful Soup) 차이 (0) | 2024.07.12 |
| NextJs 에서 Kakao Maps와 Geolocation으로 인한 초기 위치 문제 해결하기 (0) | 2024.07.04 |
| React, NextJs에 SVG 사용하기 (0) | 2024.06.20 |