Heroku에 Flask 애플리케이션 배포

19412 단어 devopspythonwebdev
플라스크를 사용하여 간단한 기계 학습 모델을 heroku에 배포하는 방법을 보여주었습니다. 이 게시물에서는 웹 스크래퍼 플라스크 앱을 배포하는 방법을 보여드리겠습니다. 티커를 검색하여 회사의 재무제표를 가져오는 간단한 python-flask API를 만들었습니다.

티커란 무엇입니까?



티커 기호는 일반적으로 공개적으로 거래되는 증권을 식별하는 데 사용되는 문자 모음으로 표시되는 약어입니다. 티커 기호는 거래되는 주식 시장에 따라 다릅니다. 문자, 숫자 또는 둘의 조합으로 구성될 수 있습니다. 때로는 주식 기호라고도 합니다.

관련 단계:


  • 웹 스크래퍼를 만듭니다.
  • 플라스크를 사용하여 웹 앱을 만듭니다.
  • Heroku 호스팅.

  • 웹 스크래핑



    Yahoo Finance에서 데이터를 스크랩하고 있습니다. 그런 다음 파이썬 스크립트는 HTTP 요청을 보내고 웹사이트에서 주어진 시세를 검색할 것이며 출력은 간단한 HTML 응답이 될 것입니다. 이는 HTML, XML 및 기타 마크업 언어에서 데이터를 가져오기 위한 Python 라이브러리인 Beautiful Soup을 사용하여 달성할 수 있습니다. 브라우저와 마찬가지로 해당 페이지의 소스 코드를 다운로드하지만 페이지를 시각적으로 표시하는 대신 HTML 요소를 찾는 페이지를 필터링합니다.

    import pandas as pd
    from bs4 import BeautifulSoup
    from urllib.request import urlopen, Request
    
    
    def search_company(search_string):
        url = 'https://finance.yahoo.com/quote/' + search_string + '/financials?p=' + search_string
        client = Request(url)
        response = urlopen(client).read()
        html = BeautifulSoup(response, "html.parser")
        return html
    
    
    def company_financials(string_search):
        headers, temp_list, label_list, final = ([] for i in range(4))
        index = 0
    
        html_content = search_company(string_search)
        features = html_content.find_all('div', class_='D(tbr)')
    
        for item in features[0].find_all('div', class_='D(ib)'):
            headers.append(item.text)
    
        while index <= len(features) - 1:
            temp = features[index].find_all('div', class_='D(tbc)')
            for line in temp:
                temp_list.append(line.text)
            final.append(temp_list)
            temp_list = []
            index += 1
        df = pd.DataFrame(final[1:])
        df.columns = headers
        df.rename(columns={'ttm': 'Trailing 12 months'}, inplace=True)
        df.style.set_properties(subset=["Breakdown"], **{'text-align': 'left'})
        return df
    

    플라스크 적용



    Github account에 애플리케이션 코드가 호스팅되어 있습니다. 참조용으로 모든 html 템플릿을 추가했습니다.
    나는 HTML 테이블을 생성하기 위해 꽤 html 테이블 파이썬 패키지를 사용했습니다. pretty html table package을 사용하여 HTML 테이블을 만드는 방법에 대한 내 첫 번째 블로그를 확인하십시오.





    from bs4 import BeautifulSoup
    from flask_cors import cross_origin
    from supp import company_financials
    from pretty_html_table import build_table
    from flask import Flask, render_template, request
    
    app = Flask(__name__)
    
    
    @app.route('/', methods=['POST', 'GET'])
    @cross_origin()
    def index():
        if request.method == 'POST':
            search_string = request.form['content'].replace(" ", "")
            content = company_financials(search_string)
            table = build_table(content, 'blue_light', font_size='small', font_family='Lucida Grande', text_align='right')
            financials = BeautifulSoup(table, 'html.parser')
            return render_template('main.html', tables=financials, company=search_string.upper())
        else:
            return render_template('index.html')
    
    
    if __name__ == "__main__":
        app.run(port=8000, debug=True)
    

    Heroku에 응용 프로그램을 성공적으로 배포하려면 해당 응용 프로그램에 Procfile을 추가해야 합니다. Heroku 앱에는 시작 시 앱에서 실행되는 명령을 지정하는 Procfile이 포함되어 있습니다.
  • 먼저 Gunicorn을 설치합니다.

  • pip install gunicorn
    

  • requirements.txt 업데이트

  • pip freeze > requirements.txt
    



    beautifulsoup4==4.9.1
    bs4==0.0.1
    certifi==2020.6.20
    chardet==3.0.4
    click==7.1.2
    Flask==1.1.2
    Flask-Cors==3.0.9
    gunicorn==20.0.4
    idna==2.10
    itsdangerous==1.1.0
    Jinja2==2.11.2
    MarkupSafe==1.1.1
    numpy==1.19.2
    pandas==1.1.2
    pretty-html-table==0.9.dev0
    pymongo==3.11.0
    python-dateutil==2.8.1
    pytz==2020.1
    requests==2.24.0
    six==1.15.0
    soupsieve==2.0.1
    urllib3==1.25.10
    Werkzeug==1.0.1
    

  • 프로필 파일 만들기

  • web: gunicorn app:app
    

    코드 GitHub를 커밋하고 Heroku를 GitHub에 연결합니다.



    연결 후 두 가지 방법으로 앱을 배포할 수 있습니다. 자동 배포 또는 수동 배포를 선택할 수 있습니다. github 리포지토리에 무엇이든 커밋할 때마다 자동 배포가 수행됩니다. 자동으로 빌드가 시작됩니다. 수동 배포를 사용하여 배포했습니다.
    브랜치를 선택하고 배포를 클릭하기만 하면 빌드가 시작됩니다. 배포에 성공하면 배포 탭이 아래와 같이 표시됩니다.


    헤로쿠 호스팅



    성공적인 배포 후 앱이 생성됩니다. 보기 버튼을 클릭하면 앱이 열립니다. API가 생성됩니다.

    내 앱 확인: https://get-company-financials.herokuapp.com/

    이 게시물이 도움이 되었기를 바랍니다. 이렇게 하면 최종 사용자가 웹 스크래퍼를 만들고 플라스크를 사용하여 배포하는 데 도움이 됩니다.

    Octocat이 내 GitHub 리포지토리로 이동합니다...

    좋은 웹페이지 즐겨찾기