스파르타코딩클럽 웹개발 종합반 3-15 ~ 3-16 , 3주차 숙제, 4-1 ~ 4-5

JaeSung Lee·2022년 10월 26일
0

국비스파르타코딩

목록 보기
6/7

3주차 숙제 해설

  • import requests
    from bs4 import BeautifulSoup
    
    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('https://www.genie.co.kr/chart/top200?ditc=M&rtm=N&ymd=20210701',headers=headers)
    
    soup = BeautifulSoup(data.text, 'html.parser')
    
    trs = soup.select('#body-content > div.newest-list > div > table > tbody > tr')
    
    for tr in trs:
        title = tr.select_one('td.info > a.title.ellipsis').text.strip()
        rank = tr.select_one('td.number').text[0:2].strip()
        artist = tr.select_one('td.info > a.artist.ellipsis').text
        print(rank, title, artist)

4주차 Flask


기본적인 원리다.

하지만 개인이 서버를 둘 수 있는 컴퓨터가 없기 때문에
요즘은 서버 대여해주는 cloud를 많이 이용한다.

flask란?

  • 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)
   
   
   
   다했으면
    http://localhost:5000/  
    들어가서
    Hello World! 뜨면 성공이다.
    
    
  Flask URL 나눠보기
@app.route('/) 부분을 수정해서 URL을 나눌 수 있다!      
url 별로 함수명이 같거나, route('/')내의 주소가 같으면 안된다.
        

flask 시작하기

Flask 서버를 만들 때, 항상,

프로젝트 폴더 안에,
ㄴstatic 폴더 (이미지, css파일)
ㄴtemplates 폴더 (html파일)
ㄴapp.py 파일

이렇게 세 개를 만드는게 기본 틀이다.
(가상환경인 venv는 실제로는 보이지만, 안보인다 생각해야된다.)

templates(html 불러오기)

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)

잠깐 복습!

GET, POST 요청타입 - 리마인드
     
 은행에서 같은 예금 창구에서도 개인 고객이냐 기업 고객이냐에 따라 처리하는 것이 다른 것처럼,
클라이언트가 요청 할 때에도, "방식"이 존재한다.
HTTP 라는 통신 규약을 따른다.
클라이언트는 요청할 때 HTTP request method(요청 메소드)를 통해, 어떤 요청 종류인지 응답하는 서버 쪽에 정보를 알려준다.
    
여러 방식([링크](https://developer.mozilla.org/ko/docs/Web/HTTP/Methods))이 존재하지만 우리는 가장 많이 쓰이는 GET, POST 방식에 대해 다루겠습니다. 
    * GET        →      통상적으로! 데이터 조회(Read)를 요청할 때
                               예) 영화 목록 조회
                      →     **데이터 전달** : URL 뒤에 물음표를 붙여 key=value로 전달
                      →     예: google.com?q=북극곰
    
    * POST     →      통상적으로! 데이터 생성(Create), 변경(Update), 삭제(Delete) 요청 할 때
                               예) 회원가입, 회원탈퇴, 비밀번호 수정
                      →     **데이터 전달 :** 바로 보이지 않는 HTML body에 key:value 형태로 전달
    
    
- 2) GET 요청에서 클라이언트의 데이터를 받는 방법
    - 예를 들어, 클라이언트에서 서버에 title_give란 키 값으로 데이터를 들고왔다고 생각.
    (주민등록번호 라는 키 값으로 900120- .. 을 가져온 것과 같은 의미)
        
        
        Jquery 임포트 
            ```csharp
            <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
            ```
            
        GET 요청 API코드
            ```python
            @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코드**
    
    ```python
    @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)
    }
  })

https://velog.io/@awesome-hong/VScode%EC%97%90%EC%84%9C-%EA%B0%80%EC%83%81%ED%99%98%EA%B2%BD-%EC%84%A4%EC%A0%95-Flask-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0
VSC로 파이선 가상환경 만들때 참고할만한 벨로그다.
강의는 파이참으로 한다...
오티때 편집 프로그램 아무거나 사용해도 상관없다고해서
VSC로 하고있는데 막힌부분 물어보니까 파이참 사용하란다...
이제와서...?ㅜㅜ 그래도 백엔드 과정이라서 딱히 신경은 안쓰는데
공부 의욕이 순간 식었다.
열심히해야지 화이팅!

profile
정말 최선을 다하겠습니다.

0개의 댓글