График с использованием Flask и Web Scrapping - PullRequest
0 голосов
/ 13 июля 2020

Я не могу получить результат. Вместо этого я получаю ошибку 404. Здесь, в коде, изображение сохраняется в автономном режиме, однако я хотел бы, чтобы изображение создавалось в Интернете, а не сохранялось локально, а затем отображалось на веб-странице.

Ниже приведен мой код для построения кривой доходности путем удаления данных в Интернете.

from flask import Flask, render_template
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.pyplot as plt
import bs4
import requests
from bs4 import BeautifulSoup
from urllib.request import urlopen

app = Flask(__name__)

@app.route('/plot')
def plot():
    url = 'https://www.ccilindia.com/RiskManagement/SecuritiesSegment/Pages/ZCYCCurrent.aspx'
    try:
     page = urlopen(url)
    except:
     print('Error opening the URL')
     
    soup = bs4.BeautifulSoup(page,'html.parser')
    Beta_0 = float(soup.find_all('td',{'class': 'ms-vb2'})[4].text)
    Beta_1 = float(soup.find_all('td',{'class': 'ms-vb2'})[5].text)
    Beta_2 = float(soup.find_all('td',{'class': 'ms-vb2'})[6].text)
    Beta_3 = float(soup.find_all('td',{'class': 'ms-vb2'})[7].text)
    Tau_1 = float(soup.find_all('td',{'class': 'ms-vb2'})[8].text)
    Tau_2 = float(soup.find_all('td',{'class': 'ms-vb2'})[9].text)
    
    tenor = []; NSS = []
    for i in range(1,42):
        tenor.append(i)
    for i in range(len(tenor)):    
        NSS.append(Beta_0+Beta_1*(1-np.exp(-tenor[i]/Tau_1))/(tenor[i]/Tau_1)+\
        Beta_2*(((1-np.exp(-tenor[i]/Tau_1))/(tenor[i]/Tau_1))-np.exp(-tenor[i]/Tau_1))+\
        Beta_3*(((1-np.exp(-tenor[i]/Tau_2))/(tenor[i]/Tau_2))-np.exp(-tenor[i]/Tau_2)))
    print(NSS)
    
    plt.title('Yield Curve')
    plt.xlabel('Tenor')
    plt.ylabel('Yield rate')
    plt.plot(tenor, NSS)

    plt.savefig('static/images/plot.png')

    return render_template('yield.html', url='/static/images/plot.png')

if __name__ == '__main__':
   app.run()

Ниже приведен код HTML для yield. html

<html>
   <body>

      <h1>Price Chart</h1>

      <p>{{ name }}</p>

      <img src="/plot.png" alt="my plot">

   </body>
</html>

Моя ошибка

runfile('E:/MSE/Website/yield demo.py', wdir='E:/MSE/Website')
 * Serving Flask app "yield demo" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
INFO:werkzeug: * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
127.0.0.1 - - [14/Jul/2020 09:47:45] "GET / HTTP/1.1" 404 -
INFO:werkzeug:127.0.0.1 - - [14/Jul/2020 09:47:45] "GET / HTTP/1.1" 404 -
127.0.0.1 - - [14/Jul/2020 09:47:57] "GET /plot.png HTTP/1.1" 404 -
INFO:werkzeug:127.0.0.1 - - [14/Jul/2020 09:47:57] "GET /plot.png HTTP/1.1" 404 -
127.0.0.1 - - [14/Jul/2020 09:48:35] "GET /static/images/plot.png HTTP/1.1" 404 -
INFO:werkzeug:127.0.0.1 - - [14/Jul/2020 09:48:35] "GET /static/images/plot.png HTTP/1.1" 404 -

1 Ответ

0 голосов
/ 13 июля 2020

Ошибка 404 означает, что страница, на которую вы пытаетесь перейти, не существует. Я думаю, что если вы хотите сохранить его в автономном режиме, вам следует сделать это через экземпляр S3 из AWS, чтобы было как можно проще ссылаться на изображение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...