python爬取台风数据并进行路径可视化处理给出代码
时间: 2023-08-24 12:04:09 浏览: 227
好的!以下是一个简单的示例代码,展示了如何使用 Python 爬取台风数据并进行路径可视化处理。这里我们使用的是中国气象局的台风数据:
```python
import requests
from bs4 import BeautifulSoup
import pandas as pd
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
# 爬取数据
url = 'http://www.nmc.cn/f/rest/passed/typhoon?userId=×tamp=1627634548372'
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')
# 解析数据
data = []
for item in soup.find_all('item'):
typhoon_id = item.typhoonid.string
typhoon_name = item.typhoonname.string
typhoon_time = item.time.string
typhoon_lat = item.lat.string
typhoon_lon = item.lon.string
typhoon_wind = item.wind.string
typhoon_pressure = item.pressure.string
data.append([typhoon_id, typhoon_name, typhoon_time, typhoon_lat, typhoon_lon, typhoon_wind, typhoon_pressure])
# 转换为 DataFrame 格式
df = pd.DataFrame(data, columns=['id', 'name', 'time', 'lat', 'lon', 'wind', 'pressure'])
df['time'] = pd.to_datetime(df['time']) # 转换日期格式
df['lat'] = pd.to_numeric(df['lat']) / 10 # 转换纬度格式
df['lon'] = pd.to_numeric(df['lon']) / 10 # 转换经度格式
# 绘制地图
fig = plt.figure(figsize=(10, 10))
ax = plt.axes(projection=ccrs.PlateCarree())
ax.stock_img()
ax.coastlines()
# 绘制路径
for name, group in df.groupby('name'):
ax.plot(group['lon'], group['lat'], label=name)
# 添加图例
ax.legend(loc='upper left', fontsize='large')
# 显示图形
plt.show()
```
这段代码会爬取中国气象局的台风数据,并将台风的路径绘制在地图上。需要注意的是,这里使用了 cartopy 库进行地图投影和绘制,需要提前安装。另外,由于中国气象局的数据可能会有更新或者变动,这段代码的运行结果可能与实际情况略有出入。
阅读全文