爬取http://www.nmc.cn/publish/forecast/AHB/wuhan.html近15天的温度(日期,温度),并且把爬取的数据写入到csv文件,然后对爬取的数据进行处理,获得温度最高的10天,以柱状图的形式进行可视化化显示(日期,温度),要求用pyecharts,不使用pandas库
时间: 2024-03-23 12:40:50 浏览: 125
好的,针对你的新需求,以下是不使用 pandas 库的代码实现:
```python
import requests
from bs4 import BeautifulSoup
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 文件
with open('温度数据.csv', 'w', encoding='utf_8_sig') as f:
f.write('日期,温度\n')
for d in data:
f.write(','.join(d) + '\n')
# 获取温度最高的 10 天数据
sorted_data = sorted(data, key=lambda x: float(x[1]), reverse=True)
top_10 = sorted_data[:10]
# 可视化温度最高的 10 天数据
x_data = [d[0] for d in top_10]
y_data = [float(d[1]) for d in top_10]
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')
```
与上面使用 pandas 库的实现相比,这里需要手动对爬取到的数据进行排序和筛选,比较繁琐。但是,这种实现方式避免了使用额外的库,对于一些简单的数据处理需求来说,也是可以接受的。
阅读全文