用python爬取2023年武汉市6月1号到10号的温度写入CSV文件中然后可视化生成折线图呈现在HTML
时间: 2024-04-02 22:31:58 浏览: 69
【Python数据可视化源码实例Pyecharts库集合】折线图.zip
好的,这个任务可以拆分成以下几个步骤:
1. 确定要爬取的网站和数据:我们可以选择去爬取气象网站或者其他可靠的天气预报网站,获取武汉市6月1号到10号每天的温度数据。
2. 使用 Python 的 requests 库和 Beautiful Soup 库爬取网页:在 Python 中,我们可以使用 requests 库发送 HTTP 请求,然后使用 Beautiful Soup 库解析 HTML 内容,从而获取我们需要的数据。
3. 将数据写入 CSV 文件:使用 CSV 库将获取到的数据写入 CSV 文件,方便后续的数据处理。
4. 使用 Matplotlib 库绘制折线图:使用 Matplotlib 库将获取到的数据绘制成折线图。
5. 将折线图嵌入到 HTML 中:使用 Flask 框架将折线图嵌入到 HTML 中,方便查看和分享。
下面是 Python 代码示例:
```python
import requests
from bs4 import BeautifulSoup
import csv
import matplotlib.pyplot as plt
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
# 爬取天气数据
url = 'http://www.tianqihoubao.com/lishi/wuhan/202306.html'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
table = soup.find_all('table')[0]
rows = table.find_all('tr')[1:-1]
data = []
for row in rows:
cols = row.find_all('td')
date = cols[0].text.strip()
temp = cols[1].text.strip()
data.append((date, temp))
# 写入 CSV 文件
with open('temp.csv', 'w', newline='') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(['Date', 'Temperature'])
for d in data:
writer.writerow(d)
# 绘制折线图
dates = [d[0] for d in data]
temps = [int(d[1]) for d in data]
plt.plot(dates, temps)
plt.xlabel('Date')
plt.ylabel('Temperature')
plt.title('Temperature in Wuhan from June 1st to June 10th, 2023')
plt.savefig('temp.png')
# 嵌入到 HTML 中
return render_template('index.html', image_file='temp.png')
if __name__ == '__main__':
app.run()
```
这个示例代码使用了 Flask 框架来实现将折线图嵌入到 HTML 中,所以还需要一个 HTML 模板文件,可以创建一个名为 `templates/index.html` 的文件,并将以下代码复制进去:
```html
<!DOCTYPE html>
<html>
<head>
<title>Temperature Chart</title>
</head>
<body>
<img src="{{ url_for('static', filename=image_file) }}" alt="Temperature Chart">
</body>
</html>
```
最后,运行 Python 代码,在浏览器中访问 `http://localhost:5000`,就可以看到生成的折线图啦!
阅读全文