어느덧 수업의 막바지인 4주차에 접어들었다. 이번 진도에서는 앞선 3주차에 배운 내용을 Flask서버를 통해 웹 브라우저로 띄우는 본격적인 실습이었다.
비록 로컬 서버이지만 실제 서비스 될 웹 브라우저의 렌더링되는 내용이어서 5주차가 더욱 기대되어졌다. 실습 내용이 부족했다고 느껴졌었던 부분이 4주차에는 2개의 실습 프로젝트를 진행하면서 일정 부분 해소되었다.
과제 제출 내용은 직접 DB에 값을 넣고 뿌려주었지만 만들다보니 실제 트위터나 팬클럽의 응원 메시지를 크롤링해서 Flask서버에 띄워주고 싶은 생각도 들어 자체적으로 진행해보려고 한다.
이번 4주차도 재밌었다. 만.족.
4주차 학습 내용 요약
파이썬을 활용한 크롤링 + MongoDB Atlas 실습 + FLASK 서버
3주차에서 실습했던 크롤링 + MongoDB Atlas 복습
프로젝트 생성 시 확인 사항
기본 파일 세팅
- 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 확인
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)
'항해99 > 사전 교육' 카테고리의 다른 글
스파르타 코딩 웹 개발 종합반 - 3주차 회고 (0) | 2022.04.07 |
---|---|
스파르타 코딩 웹 개발 종합반 - 2주차 회고 (0) | 2022.04.05 |
스파르타 코딩 웹 개발 종합반 - 1주차 회고 (0) | 2022.04.04 |