爬取http://www.nmc.cn/publish/forecast/AHB/wuhan.html近15天的温度(日期,温度),并且把爬取的数据写入到csv文件,然后对爬取的数据进行处理,获得温度最高的10天,以柱状图的形式进行可视化化显示(日期,温度),要求用pyecharts
时间: 2024-03-23 10:40:48 浏览: 162
好的,我明白了你的要求。为了实现这个需求,我们需要用到 Python 的 requests、BeautifulSoup 库进行网页解析,并使用 pandas 库进行数据处理和输出 csv 文件,最后使用 pyecharts 库进行可视化。
以下是完整代码实现:
```python
import requests
from bs4 import BeautifulSoup
import pandas as pd
from pyecharts.charts import Bar
from pyecharts import options as opts
# 获取网页内容
url = 'http://www.nmc.cn/publish/forecast/AHB/wuhan.html'
res = requests.get(url)
res.encoding = 'utf-8'
html = res.text
# 解析网页内容
soup = BeautifulSoup(html, 'html.parser')
table = soup.find_all('table')[0]
trs = table.find_all('tr')[1:]
# 获取温度数据
data = []
for tr in trs:
tds = tr.find_all('td')
date = tds[0].text.strip()
temp = tds[1].text.strip()
data.append([date, temp])
# 将数据写入 csv 文件
df = pd.DataFrame(data, columns=['日期', '温度'])
df.to_csv('温度数据.csv', index=False, encoding='utf_8_sig')
# 获取温度最高的 10 天数据
top_10 = df.nlargest(10, '温度').sort_values(by='日期')
# 可视化温度最高的 10 天数据
x_data = top_10['日期'].tolist()
y_data = top_10['温度'].tolist()
bar = (
Bar()
.add_xaxis(x_data)
.add_yaxis('温度', y_data)
.set_global_opts(
title_opts=opts.TitleOpts(title='温度最高的 10 天'),
xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=15)),
yaxis_opts=opts.AxisOpts(name='温度(℃)'),
)
)
bar.render('温度最高的 10 天.html')
```
运行完毕后,会在当前目录下生成一个名为 `温度数据.csv` 的文件和一个名为 `温度最高的 10 天.html` 的文件,其中 `温度数据.csv` 是爬取到的原始数据,`温度最高的 10 天.html` 是温度最高的 10 天数据的柱状图可视化结果。
阅读全文