【问题标题】:Flask/Python - How can I run this python script in Flask and render output in html pageFlask/Python - 如何在 Flask 中运行这个 python 脚本并在 html 页面中呈现输出
【发布时间】:2020-09-17 11:17:47
【问题描述】:

我正在编写此代码以获取一些股票价格值,我如何在 results.html 页面中呈现输出结果? 我正在使用 Heroku 制作这个应用程序。

请帮助我使用这个应用程序。 这是调用其他文件的主文件。

如果需要更多详细信息来运行此应用,请告诉我。

这是我编写的代码,用于在 view.html 页面中显示输出。 x.py

print('----EURO DO REMESSA ONLINE-----')
import melhor
print('-----COTAÇÃO DOLARHOJE.COM-----')
import cota
print('-----INDICADOR EURO COMERCIAL H1----')
import indicator
print('-----INVESTING VALOR EURO COM-----')
import invest
print( '-------------\n', 'Conhece a ti mesmo. (Tales de Mileto)', '\n-------------')

melhor.py

import requests
from bs4 import BeautifulSoup as bs
import time
import re
from Color import *
url = 'https://www.remessaonline.com.br/cotacao/cotacao-euro'
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'}
page = requests.get(url, headers=headers)
page
page.status_code
page.text
soup = bs(page.text, 'html.parser')
resumo = soup.find_all('div', class_="style__Text-sc-27fg4f-2 ddwOcG")[0].get_text('')
mult = float(re.sub('[^0-9.]', "", resumo.replace(",",".")))
print('Euro COMERCIAL: R$', Base.BOLD, ANSI_Compatible.Color(120), mult, ANSI_Compatible.END, Base.END)
eur_rate = 1.035145
eur_ra = str(mult * eur_rate)[:6]
print('Euro TURISMO: R$', Base.BOLD, eur_ra, Base.END)
current = time.strftime("%Y / dia:%d mês:%m horário:%H:%M:%S")
print(current)
with open('remessa.txt', 'a') as f:
    f.writelines('Valor euro turismo:' + 'R$' + eur_ra + ' ' + 'Data:' + current + '\n')

cota.py

import requests
import time

response = requests.get('http://dolarhoje.com/cotacao.txt')
data = response.text
print('1 USD comercial =',"R$",data )

response = requests.get('http://dolarhoje.com/dolar-turismo/cotacao.txt')
data = response.text
print('1 USD turismo =',"R$",data )

response = requests.get('http://dolarhoje.com/euro/cotacao.txt')
data2 = response.text
print('1 EUR comercial =',"R$",data2 )

response = requests.get('http://dolarhoje.com/euro-turismo/cotacao.txt')
data2 = response.text
print('1 EUR turismo =',"R$",data2 )

response = requests.get('http://dolarhoje.com/bitcoin-hoje/cotacao.txt')
data3 = response.text
print('1 BTC =',"R$",data3 )


current = time.strftime("ano:%Y dia:%d mês:%m horário:%H:%M:%S")
with open('cota.txt', 'a') as f:
    f.writelines('Valor euro turismo:' + 'R$' + data2 + ' ' + 'Data:' + current + '\n')

indicator.py

import requests
from bs4 import BeautifulSoup as bs


url = 'https://br.investing.com/currencies/eur-brl-technical'
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'}
page = requests.get(url, headers=headers)
page
page.status_code
page.text
soup = bs(page.text, 'html.parser')
resumo = soup.find_all(id='techStudiesInnerWrap')[0].get_text(' ')
print(resumo) 

投资.py

import requests
from bs4 import BeautifulSoup as bs


url = 'https://br.investing.com/currencies/eur-brl-technical'
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'}
page = requests.get(url, headers=headers)
page
page.status_code
page.text
soup = bs(page.text, 'html.parser')
resumo = soup.find_all('div', class_="top bold inlineblock")[0].get_text(' ')
print(resumo) 

感谢您的关注。

【问题讨论】:

    标签: python html flask heroku render


    【解决方案1】:

    希望能对你有所帮助,我对 Python 了解不多。但听起来如果你在做 html 页面的服务器端渲染,你只需要一个模板引擎,比如 Jade、Pug 或类似的东西。

    【讨论】:

      【解决方案2】:

      这里有一些例子供你学习:

      https://www.grizzlypeaksoftware.com/articles?id=1m3W3llyJLy4YS5OpyyxBq

      https://scotch.io/tutorials/getting-started-with-flask-a-python-microframework

      https://scoutapm.com/blog/python-flask-tutorial-getting-started-with-flask

      https://www.liquidweb.com/kb/getting-started-with-flask/

      https://github.com/akibrhast/flask_base_template

      基本上,您需要了解的是如何创建后端服务器。在这种情况下使用烧瓶。通常与烧瓶一起使用的模板引擎称为 Jinja。一旦您对您的数据发出请求调用,您可能希望通过 jinja 将其传递给您的路线。

      这是一个基本的例子:

      from flask import Flask, flash, redirect, render_template, request, session, abort,url_for
      import os
      
      #from flask_login import login_user, current_user, logout_user, login_required #Optional login imports, need to 'pip install flask_login'
      
      app = Flask(__name__)
      
      @app.route('/')
      def index():
        return render_template("base.html")
      
      if __name__ == '__main__':
          app.secret_key = os.urandom(12)
          app.run(debug=True)
      

      【讨论】:

        【解决方案3】:

        我解决了这个问题!这是我找到的解决方案:

        首先,您可以在这里访问应用程序:finance-python.herokuapp.com

        app.py

        from flask import Flask
        from functools import wraps
        import sqlite3
        import requests
        import bs4
        import requests_html
        from flask import render_template
        import subprocess
        import re
        import flask
        from bs4 import BeautifulSoup as bs
        import time
        
        app = flask.Flask(__name__)
        
        @app.route("/", methods=['GET', 'POST'])
        def index():
            url = 'https://www.remessaonline.com.br/cotacao/cotacao-euro'
            headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'}
            page = requests.get(url, headers=headers)
            page
            page.status_code
            page.text
            soup = bs(page.text, 'html.parser')
            resumo = soup.find_all('div', class_="style__Text-sc-27fg4f-2 ddwOcG")[0].get_text('')
            mult = float(re.sub('[^0-9.]', "", resumo.replace(",",".")))
            euro_comercial_rem = print('Euro COMERCIAL: R$', mult)
            eur_rate = 1.035145
            eur_ra = str(mult * eur_rate)[:6]
            euro_turismo_rem = print('Euro TURISMO: R$', eur_ra)
            current = time.strftime("%Y / dia:%d mês:%m horário:%H:%M:%S")
            print(current)
        
            response = requests.get('http://dolarhoje.com/cotacao.txt')
            data = response.text
            dolar_com_dolar_hoje = print('1 USD comercial =',"R$",data )
            response = requests.get('http://dolarhoje.com/dolar-turismo/cotacao.txt')
            dataa = response.text
            dolar_tur_dolar_hoje = print('1 USD turismo =',"R$",dataa )
        
            response = requests.get('http://dolarhoje.com/euro/cotacao.txt')
            data2 = response.text
            euro_com_dolar_hoje = print('1 EUR comercial =',"R$",data2 )
            response = requests.get('http://dolarhoje.com/euro-turismo/cotacao.txt')
            dataa2 = response.text
            euro_tur_dolar_hoje = print('1 EUR turismo =',"R$",dataa2 )
        
            response = requests.get('http://dolarhoje.com/bitcoin-hoje/cotacao.txt')
            data3 = response.text
            btc_dolar_hoje = print('1 BTC =',"R$",data3 )
        
        
            current = time.strftime("ano:%Y dia:%d mês:%m horário:%H:%M:%S")
        
            url = 'https://br.investing.com/currencies/eur-brl-technical'
            headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'}
            page = requests.get(url, headers=headers)
            page
            page.status_code
            page.text
            soup = bs(page.text, 'html.parser')
            resumoo = soup.find_all(id='techStudiesInnerWrap')[0].get_text(' ')
            resumo_inves = print(resumoo)
        
            url = 'https://br.investing.com/currencies/eur-brl-technical'
            headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'}
            page = requests.get(url, headers=headers)
            page
            page.status_code
            page.text
            soup = bs(page.text, 'html.parser')
            resumooo = soup.find_all('div', class_="top bold inlineblock")[0].get_text(' ')
            resumo_invest_eur_brl = print(resumooo)
            #resumos = 'eur_ra' + 'euro_turismo_rem' + 'dolar_com_dolar_hoje' + 'dolar_tur_dolar_hoje' + 'btc_dolar_hoje' + 'resumo_inves' + 'euro_com_dolar_hoje' + 'euro_tur_dolar_hoje'
        
            return flask.render_template('index.html', mult=mult, eur_ra=eur_ra, current=current, data=data, dataa=dataa, data2=data2, dataa2=dataa2, data3=data3, resumoo=resumoo, resumooo=resumooo)
        
        if __name__ == '__main__':
            app.run()
        

        index.html 放入 template 文件夹

        -----EURO DO REMESSA ONLINE----- <br>
        EURO COMERCIAL : R$ {{ mult }} <br>
        EURO TURISMO: R$ {{ eur_ra }} <br>
        {{ current }} <br> <br>
        ----COTAÇÃO DOLARHOJE.COM----- <br>
        1 USD comercial = R$ {{ data }} <br>
        1 USD turismo = R$ {{ dataa }} <br>
        1 EUR comercial = R$ {{ data2 }} <br>
        1 EUR turismo = R$ {{ dataa2 }} <br>
        1 BTC = R$ {{ data3 }} <br> <br>
        -----INDICADOR EURO COMERCIAL H1----- <br>
        {{ resumoo }} <br> <br>
        -----VARIAÇÃO DO EURO-----<br>
        {{ resumooo }} <br> <br>
        
        Conhece a ti mesmo - Tales de Mileto
        

        【讨论】:

          猜你喜欢
          • 2017-04-15
          • 1970-01-01
          • 2017-11-18
          • 2016-09-27
          • 2019-05-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多