python - 使用 Flask 和 Web Scraping 绘图
问题描述
我无法获得输出。相反,我收到 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()
下面是 yield.html 的 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 -
解决方案
404 错误表示您尝试访问的页面不存在。我认为如果您想离线保存它,您应该通过 AWS 的 S3 实例来完成,以尽可能轻松地引用图像。
推荐阅读
- three.js - Three.js如何将四元数转换为Pathline?
- powershell - 什么证书用于对 PS 脚本进行数字签名
- java - 如何翻转三角形?
- bash - 在 Mattermost 中批量处理电子邮件邀请
- javascript - 如何使 h1 标头在移动设备上更具响应性
- html - CSS Grid - 网格模板区域不会将输入拉伸到最后
- php - 带有 php 模式的计算器
- python - 如何将 .txt 与另一个进行比较并返回其中没有的内容?
- python - AWS Lambda 函数返回相同的值,除非重新部署
- typescript - 将 api 服务更新为 typescript - TS2339:“Http”类型上不存在属性“实例”