●Flask
파이 몽고나 bs4, requests 처럼 똑같이 패키지를 설치 후 임포트!
Flask 프레임 워크 : 서버를 구동시켜주는 편한 코드 모음
from flask import Flask
app = Flask(__name__)
@app.route('/')
def home():
return 'This is Home!'
if __name__ == '__main__':
app.run('0.0.0.0',port=5000,debug=True)
크롬에서 localhost:5000/ 으로 접속하면 내 컴퓨터로 돌리고 있는 서버가 나온다.
-종료
터미널 창을 클릭하고 ctrl + c를 누르자!
◎Flask 기초
Flask 서버를 만들 때는 항상 프로젝트 폴더 안에
static폴더 - 이미지, css파일을 넣어둔다
templates폴더 - html파일을 넣어둔다
app.py파일 이 3개를 만들고 시작하자
venv는 가상환경(보이지 않는다 생각하기, 패키지가 이곳에 설치 된다)
윈도우 기준 git을 이용해 venv 폴더 만들기
1. python -m venv .venv
.venv : 원하는 가상환경 이름
2. source .venv/Scripts/activate
가상환경 실행

이렇게 (.venv)라고 터미널에 뜨면 성공!
출처 : https://velog.io/@martinalee94/%EA%B0%80%EC%83%81%ED%99%98%EA%B2%BDvenv-%EB%A7%8C%EB%93%A4%EA%B8%B0
HTML파일을 templates 폴더에 넣어두고 불러올 수 잇는데
#flask 내장함수 render_template를 이용하자
from flask import Flask, render_template
app = Flask(__name__)
## URL 별로 함수명이 같거나,
## route('/') 등의 주소가 같으면 안됩니다.
@app.route('/')
def home():
return render_template('index.html')
if __name__ == '__main__':
app.run('0.0.0.0', port=5000, debug=True)
◎API (GET, POST 요청타입)
GET, POST 방식
여러 방식(링크)이 존재하지만 우리는 가장 많이 쓰이는 GET, POST 방식에 대해 다루겠습니다.
* GET
→ 통상적으로! 데이터 조회(Read)를 요청할 때
예) 영화 목록 조회
→ 데이터 전달 : URL 뒤에 물음표를 붙여 key=value로 전달
→ 예: google.com?q=북극곰
* POST → 통상적으로! 데이터 생성(Create), 변경(Update), 삭제(Delete) 요청 할 때
예) 회원가입, 회원탈퇴, 비밀번호 수정
→ 데이터 전달 : 바로 보이지 않는 HTML body에 key:value 형태로 전달
◎GET, POST 요청 클라이언트의 데이터를 받는 법
받은 값은 pirnt로 찍어볼 수 있다.
-GET 요청 API코드
@app.route('/test', methods=['GET'])
def test_get():
title_receive = request.args.get('title_give')
print(title_receive)
return jsonify({'result':'success', 'msg': '이 요청은 GET!'})
- GET 요청 확인 Ajax코드
$.ajax({
type: "GET",
url: "/test?title_give=봄날은간다",
data: {},
success: function(response){
console.log(response)
}
})
- POST 요청 API코드
@app.route('/test', methods=['POST'])
def test_post():
title_receive = request.form['title_give']
print(title_receive)
return jsonify({'result':'success', 'msg': '이 요청은 POST!'})
- POST 요청 확인 Ajax코드
$.ajax({
type: "POST",
url: "/test",
data: { title_give:'봄날은간다' },
success: function(response){
console.log(response)
}
})
-post 연습할시 하면 좋은 순서
필요한 API가 몇 가지 인지 생각 혹시 크롤링 해야할 값이 있다면 한번 먼저 시도 해보자.
1) 클라이언트와 서버 연결 확인하기
2) 서버부터 만들기
3) 클라이언트 만들기
4) 완성 확인하기(핑퐁)
-get 연습시
API 만들고 사용해보기 - 리스팅API ( Read > GET)
●meta태그 스크래핑
우리가 카톡이나 기사 URL만 입력했는데 썸네일과 간단 요약 같은 자동으로 먼저 불러와지는 부분들이 있다.
예) 영화 관련 url을 카톡으로 전송시 썸네일, 제목, 줄거리, 평점 등을 자동으로 보여준다.
이 부분들을 우리가 'meta'태그를 크롤링 함으로써 공통적으로 얻을 수 있다.
- (링크)에 접속한 뒤 크롬 개발자 도구를 이용해 HTML의 생김새를 살펴볼까요?
- 메타 태그는, <head></head> 부분에 들어가는, 눈으로 보이는 것(body) 외에 사이트의 속성을 설명해주는 태그들입니다.
- 예) 구글 검색 시 표시 될 설명문, 사이트 제목, 카톡 공유 시 표시 될 이미지 등
- 우리는 그 중 og:image / og:title / og:description 을 크롤링 할 예정입니다.
-크롤링 기본 코드
import requests
from bs4 import BeautifulSoup
url = 'https://movie.naver.com/movie/bi/mi/basic.nhn?code=171539' # 네이버 영화 소개
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')
# 여기에 코딩을 해서 meta tag를 먼저 가져와보겠습니다.
-select_one 사용
og_image = soup.select_one('meta[property="og:image"]') # 특정 태그만 불러오기
og_title = soup.select_one('meta[property="og:title"]')
og_description = soup.select_one('meta[property="og:description"]')
url_image = og_image['content']
url_title = og_title['content']
url_description = og_description['content']
print(url_image)
print(url_title)
print(url_description)
# 영화 포스터 , 영화 제목 , 간단줄거리
'정리' 카테고리의 다른 글
6-TIL 정리 (간단한 AWS-S3,IAM,CloudFront) (0) | 2022.04.25 |
---|---|
5-TIL 정리(간단 pymongo정렬과 CSS flex) (0) | 2022.04.22 |
4-TIL 정리(flask와 aws를 이용한 서버세팅)-스파르타코딩클럽- (0) | 2022.04.22 |
2-TIL 정리(Ajax,파이썬,크롤링,pymongo)-스파르타코딩클럽- (0) | 2022.04.19 |
1-TIL 정리(html,css,javascript)-스파르타코딩클럽- (0) | 2022.04.19 |