항해99/사전 교육

스파르타 코딩 웹 개발 종합반 - 4주차 회고

프로아마추어 2022. 4. 10. 11:39

어느덧 수업의 막바지인 4주차에 접어들었다. 이번 진도에서는 앞선 3주차에 배운 내용을 Flask서버를 통해 웹 브라우저로 띄우는 본격적인 실습이었다.

 

비록 로컬 서버이지만 실제 서비스 될 웹 브라우저의 렌더링되는 내용이어서 5주차가 더욱 기대되어졌다. 실습 내용이 부족했다고 느껴졌었던 부분이 4주차에는 2개의 실습 프로젝트를 진행하면서 일정 부분 해소되었다.

 

과제 제출 내용은 직접 DB에 값을 넣고 뿌려주었지만 만들다보니 실제 트위터나 팬클럽의 응원 메시지를 크롤링해서 Flask서버에 띄워주고 싶은 생각도 들어 자체적으로 진행해보려고 한다.

 

이번 4주차도 재밌었다. 만.족.


4주차 학습 내용 요약


파이썬을 활용한 크롤링 + MongoDB Atlas 실습 + FLASK 서버

 


3주차에서 실습했던 크롤링 + MongoDB Atlas 복습

 

프로젝트 생성 시 확인 사항

가상환경인 venv파일이 정상적으로 존재하는지, 파이썬 버전이 맞는지 확인한다.

 

기본 파일 세팅

  • root 폴더 아래 static(image파일, css, JavaScript파일 등), templates(HTML파일) - index.html디렉토리 생성
  • root 폴더 아래 app.py 파이썬 파일 생성

기본 디렉토리 구조(각 디렉토리는 철자가 틀리지 않게 주의!)

 

파이썬 외부 라이브러리 

requests -> 외부 API로부터 JSON데이터 가져오기

 

BS4 -> 크롤링 
requests -> 브라우저 단의 데이터를 ajax통신으로 받아온다 

 

import 코드

import requests
from bs4 import BeautifulSoup

 

headers 및 받아올 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(parsing할 웹 페이지 URL, headers=headers)

    soup = BeautifulSoup(data.text, 'html.parser')

 

3주차와는 다르게 meta태그의 정보를 크롤링하는 경우.

soup.select_one('meta[property="PROPERTY이름"]')['content']

 

패키지 pymongo, dnspython -> DB연결 

 

import 코드

from pymongo import MongoClient
client = MongoClient('mongodb+srv://test:DB비밀번호@cluster0.9cuoc.mongodb.net/클러스터이름?retryWrites=true&w=majority')
db = client.DB이름

 

DB주요 문법

# 데이터 insert
doc = {'name':'target','content':'pure'}
db.info.insert_one(doc)

# 단일 데이터 select
db.info.find_one({'name':'target'})

# 여러 데이터 select, _id 값 제외
list(db.info.find({},{'_id':False}))

# 데이터 update
db.info.update_one({'name':'target'},{'$set':{'content':'updated'}})

# 데이터 delete
db.info.delete_one({'name':'target'})

 

MongDB Atlas - DB 확인

 

https://account.mongodb.com/

 

MongoDB Cloud

MongoDB Cloud is a unified data platform for modern applications and includes a global cloud database, search, data lake, mobile, and application services.

www.mongodb.com

 


Flask 서버 

 

import 코드

from flask import Flask, render_template, request, jsonify
app = Flask(__name__)

 

단순 페이지 호출

@app.route('/')
def home():
    return render_template('index.html')

 

get/ post 요청

@app.route("REQUEST URL", methods=["GET or POST"])
def 함수명():
    return jsonify({'key':value})

 

서버 구동/ port정보

if __name__ == '__main__':
    app.run('0.0.0.0', port=5000, debug=True)