회고/Today I Learned

[TIL] 9.15 - 스파르타 내일배움캠프 3일차 (Flask Get, Post 메서드 / Meta 태그)

민돌v 2021. 9. 15. 15:54

9.15

웹 프로그래밍 A-Z기초 4주차


1) Flask

  • 플라스크는 파이썬으로 작성된 웹 프레임워크로, 파이참을 이용해 pip flask 라이브러리를 설치함으로써 사용할 수 있다.

파이썬 기반 웹 프레임워크 flask

1. 플라스크 시작하기

  1. 서버를 실행시킬 폴더를 만든 후, 폴더 안에 app.py 를 하나 만듭니다.
    • app.p : 서버를 구동시킬 파일로 사용되며, 이름은 아무거나해도 상관없지만 통상적으로 app.py를 많이 씀
    • from flask import Flask
      
      app = Flask(__name__)
      
      @app.route('/')
      def hello():
          return 'Hello, My First Flask!'
  2. app.py 와 같은 폴더안에 "templates" 폴더를 생성합니다.
    • templates : 폴더안에 html 파일이 위치합니다.  (templates 폴더는 정해진 약속이므로 꼭 이름을 맞춰야합니다.)
  3. templates 폴더안의 html 파일을 app.py에 불러오기 위해 render_templates를 사용합니다.
    • 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)

2. Flask GET 메소드, POST 메소드

1) flask GET 요청 방식

from flask import Flask, render_template, request, jsonify

@app.route('/test', methods=['GET'])
def test_get():
   title_receive = request.args.get('title_give')
   print(title_receive)
   return jsonify({'result':'success', 'msg': '이 요청은 GET!'})
  • methods = ['GET']  :  메소드를 get형식으로 선언해주는 문구
    • 이렇게 서버에 메소드형식을 알려주지 않으면, 클라이언트가 정보를 보내도 서버 쪽에서는 받을 수 없다.
  • requests.args.get  :  requests 모듈로 요청받아진 정보가 들어온다.
    • get을 통해 전달된 값들의 URL을 이용하는 것이기 때문에, POST 방식은 다른 방법이 필요하다.
  • jsonify  :  데이터를 json 형식으로 변화해 준다.

 


 

2) flask POST 요청 방식

@app.route('/test', methods=['POST'])
def test_post():
   title_receive = request.form['title_give']
   print(title_receive)
   return jsonify({'result':'success', 'msg': '이 요청은 POST!'})
  • request.form  : post 방식으로 정보를 받았을 때 flask 에서 핸들링 할 수 있는 방법이다.

 


2) meta 태그

Meta Tag란 

  • 해당 문서의 정보인 메타데이터(metadata)를 정의할 때 사용합니다.
  • 메타태그는 디자인에 영향을 미치지 않고, 검색 엔진이나 정보를 담은 위치의 개념으로 사용됩니다.
  • 메타태그는 항상 head에 위치합니다.

 

Meta Tag 사용법 (크롤링)

  • meta[]   : 속성이 일치하는 요소를 가져온다.
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를 먼저 가져와보겠습니다.
title = soup.select_one('meta[property="og:title"]')['content']

print(title)

head 부분에 위치한 Meta tag / Property 속성을 이용한다.