Heroku에 Flask 애플리케이션 배포
티커란 무엇입니까?
티커 기호는 일반적으로 공개적으로 거래되는 증권을 식별하는 데 사용되는 문자 모음으로 표시되는 약어입니다. 티커 기호는 거래되는 주식 시장에 따라 다릅니다. 문자, 숫자 또는 둘의 조합으로 구성될 수 있습니다. 때로는 주식 기호라고도 합니다.
관련 단계:
웹 스크래핑
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 테이블을 만드는 방법에 대한 내 첫 번째 블로그를 확인하십시오.
Dataframe을 예쁜 HTML 테이블로 변환하고 이메일로 보냅니다.
Siddhesh Shankar ・ 7월 25일 ・ 2분 읽기
#python
#devops
#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이 포함되어 있습니다.
pip install gunicorn
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 리포지토리로 이동합니다...
Reference
이 문제에 관하여(Heroku에 Flask 애플리케이션 배포), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/siddheshshankar/deploying-a-flask-application-on-heroku-14j0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)