天气预报数据的爬取和可视化
时间: 2023-10-01 08:08:57 浏览: 107
天气预报数据的爬取可以通过访问一些天气预报网站的API来实现,也可以通过爬取网站的HTML页面来获取数据。这里以使用Python的requests库和BeautifulSoup库爬取中国天气网(http://www.weather.com.cn/)为例。
首先,需要安装requests和BeautifulSoup库:
```python
pip install requests
pip install beautifulsoup4
```
然后,可以编写如下代码来获取某个城市未来七天的天气预报数据:
```python
import requests
from bs4 import BeautifulSoup
# 要获取天气预报的城市名称和城市代码
city_name = '北京'
city_code = '101010100'
# 请求天气预报网站的URL
url = f'http://www.weather.com.cn/weather/{city_code}.shtml'
# 发送请求并获取响应内容
response = requests.get(url)
response.encoding = 'utf-8'
html = response.text
# 解析HTML页面并提取天气预报数据
soup = BeautifulSoup(html, 'html.parser')
weather_data = []
for i in range(7):
day_data = []
# 日期
day = soup.select('.day')[i].text.strip()
day_data.append(day)
# 天气
weather = soup.select('.wea')[i].text.strip()
day_data.append(weather)
# 最高温度
high_temp = soup.select('.tem > span')[2*i].text.strip()
day_data.append(high_temp)
# 最低温度
low_temp = soup.select('.tem > i')[i].text.strip()
day_data.append(low_temp)
# 风力
wind = soup.select('.win > i')[2*i].text.strip()
day_data.append(wind)
weather_data.append(day_data)
# 输出天气预报数据
print(f'{city_name}未来七天的天气预报:')
for day_data in weather_data:
print(day_data)
```
上面的代码中,首先定义了要获取天气预报的城市名称和城市代码,然后根据城市代码构造了请求天气预报网站的URL,发送请求并获取响应内容。接着,使用BeautifulSoup库解析HTML页面,从中提取出日期、天气、最高温度、最低温度和风力等天气预报数据,存储到一个列表中,并输出到控制台。
接下来,可以使用Matplotlib库将天气预报数据可视化,代码如下:
```python
import matplotlib.pyplot as plt
# 天气预报数据可视化
dates = [day_data[0] for day_data in weather_data]
high_temps = [int(day_data[2]) for day_data in weather_data]
low_temps = [int(day_data[3]) for day_data in weather_data]
plt.figure(figsize=(10, 5))
plt.plot(dates, high_temps, 'r-', label='最高温度')
plt.plot(dates, low_temps, 'b-', label='最低温度')
plt.title(f'{city_name}未来七天的天气预报')
plt.xlabel('日期')
plt.ylabel('温度(℃)')
plt.xticks(rotation=45)
plt.legend()
plt.show()
```
上面的代码中,首先将日期、最高温度和最低温度分别存储到三个列表中,然后使用Matplotlib库的plot函数将最高温度和最低温度分别绘制成红色和蓝色的折线图,并添加标题、横轴标签、纵轴标签和图例等信息,最后显示图像。
运行上述代码,即可获取天气预报数据并将其可视化。
阅读全文